概念:
- 线性表顺序存储结构中的元素拥有一个直接前驱元素,和一个直接后继元素;线性表的第一个元素只有直接后继元素,最后一个元素只有直接前驱元素
- 线性表一旦创建,长度一般都是固定的,这是它的最大容量
线性表的基本操作:
1 public class SeqList {
2
3 final int defaultSize=10;
4 int maxSize;// 顺序表的最大长度
5 int size;// 线性表的当前长度
6 static Object[] listArray;//存储线性表的数组
7
8
9 public SeqList(int size) {
10 initiate(size);
11 }
12
13 public SeqList() {
14 initiate(defaultSize);
15 }
16
17 //初始化线性表
18 public void initiate(int sz) {
19 maxSize=sz;
20 size=0;
21 listArray=new Object[sz];
22 }
23
24 //线性表的插入
25 public void insert(int i,Object obj) throws Exception{
26 //线性表已经满了
27 if(size==maxSize) {
28 throw new Exception("线性表已经满了");
29 }
30 if(i==0) {
31 listArray[i]=obj;
32 }else {
33 //插入位置越界
34 if(i<0||i>maxSize) {
35 throw new Exception("参数有误");
36 }else {
37 for(int j=size;j>=i;j--) {
38 listArray[j]=listArray[j-1];
39 }
40 listArray[i]=obj;
41 size++;
42 }
43 }
44
45 }
46
47 //线性表的删除
48 public void delete(int i) throws Exception{
49 if(size==0) {
50 throw new Exception();
51 }
52 if(i<0||i>maxSize) {
53 throw new Exception("参数有误");
54 }else {
55 for(int j=i;j<=size;j++) {
56 listArray[j-1]=listArray[j];
57 }
58 listArray[size]=null;
59 size--;
60 }
61
62 }
63
64
65 //获取线性表中的元素
66 public Object getData(int i)throws Exception{
67 if(size==0) {
68 throw new Exception("顺序表为空,无法返回元素");
69 }
70 if(i<0||i>maxSize) {
71 throw new Exception("参数错误");
72 }
73 return listArray[i];
74 }
75
76 //获取线性表的长度
77 public int getSize() {
78 return listArray.length;
79 }
80
81 //判断线性表是否为空
82 public boolean isNull() {
83 if(listArray.length==0) {
84 return true;
85 }
86 return false;
87 }
88
89 public static void main(String[] args) throws Exception {
90 SeqList list=new SeqList(10);
91 list.insert(0,0);
92 list.insert(1,1);
93 list.insert(2,2);
94 list.insert(3,3);
95 list.insert(4,4);
96 printArr(listArray);
97 list.delete(3);
98 System.out.println();
99 printArr(listArray);
100 }
101
102
103 public static void printArr(Object[] obj) {
104 for (Object object : obj) {
105 System.out.print(object+"-");
106 }
107 }
108
109 }