6
6
## 准备数据
7
7
准备在顺序表操作中需要用到的变量及数据结构等。
8
8
``` java
9
- class DATA {// 定义数据元素结构
9
+ class DATA {// 定义数据元素结构
10
10
String key;// 结点的关键字
11
11
String name;
12
12
int age;
@@ -19,7 +19,7 @@ class DATA{ // 定义数据元素结构
19
19
class SLType {
20
20
static final int MAXLEN = 100 ;
21
21
DATA [] ListData = new DATA [MAXLEN + 1 ];// 保存顺序表的结构数组
22
- int ListLen ;// 顺序表已存结点的数量
22
+ int ListLen ;// 顺序表已存结点的数量
23
23
}
24
24
```
25
25
## 初始化顺序表
@@ -39,25 +39,25 @@ int SLLength(SLType SL){ // 返回顺序表的元素数量
39
39
## 插入结点
40
40
插入结点就是在线性表L的第i个位置插入一个新的结点,使得其后的结点编号依次加1。
41
41
``` java
42
- int SLInsert(SLType SL , int n, DATA data){// 插入结点到顺序表中间的位置
42
+ int SLInsert(SLType SL , int n, DATA data){// 插入结点到顺序表中间的位置
43
43
44
- if (SL . ListLen >= MAXLEN ){// 顺序表已满
44
+ if (SL . ListLen >= MAXLEN ){// 顺序表已满
45
45
System . out. println(" 顺序表已满,不能插入结点!\n " );
46
46
return 0 ;
47
47
}
48
48
49
- if (n< 1 || n> SL . ListLen - 1 ){// 校验插入位置的合法性
49
+ if (n< 1 || n> SL . ListLen - 1 ){// 校验插入位置的合法性
50
50
System . out. println(" 插入元素序号错误,不能插入元素!\n " );
51
51
return 0 ;
52
52
}
53
53
54
54
for (int i= SL . ListLen ;i>= n;i-- ){// 将插入位置n后续的结点都向后移动一位
55
55
SL . ListData [i+ 1 ]= SL . ListData [i];
56
56
}
57
- SL . ListData [n]= data;// 插入结点
58
- SL . ListLen ++ ;// 顺序表节点数量加1
59
- return 1 ;// 成功插入,返回1
60
- }
57
+ SL . ListData [n]= data;// 插入结点
58
+ SL . ListLen ++ ;// 顺序表节点数量加1
59
+ return 1 ;// 成功插入,返回1
60
+ }
61
61
```
62
62
## 追加结点
63
63
追加结点并不是一个基本的数据结构运算,其可以看作插入结点的一种特殊形式,相当于在顺序表的末尾新增一个数据结点。由于追加结点的特殊性,其代码实现比插入结点要简单,因为不必进行大量数据的移动。
@@ -74,7 +74,7 @@ int SLAdd(SLType SL, DATA data){ // 增加元素到顺序表尾部
74
74
## 删除结点
75
75
删除结点即删除线性表L中的第i个结点,使得其后的所有结点编号依次减1。删除一个结点之后,线性表L的长度将变为n-1。删除结点和插入结点类似,都需要进行大量数据的移动。
76
76
``` java
77
- int SLDelete(SLType SL , int n){// 按位删除顺序表的结点
77
+ int SLDelete(SLType SL , int n){// 按位删除顺序表的结点
78
78
79
79
if (n< 1 || n> SL . ListLen + 1 ){// 删除结点序号不正确
80
80
System . out. println(" 删除结点序号错误,不能删除结点!\n " );
@@ -94,7 +94,7 @@ int SLDelete(SLType SL, int n){ // 按位删除顺序表的结点
94
94
1)按照序号查找结点
95
95
按照序号查找结点是顺序表查找结点最常用的方法,这是因为顺序表的存储本身就是一个数组。
96
96
``` java
97
- DATA SLFindByNum(SLType SL , int n){// 根据序号返回数据元素
97
+ DATA SLFindByNum(SLType SL , int n){// 根据序号返回数据元素
98
98
99
99
if (n< 1 || n> SL . ListLen + 1 ){
100
100
System . out. println(" 结点序号错误,不能返回结点!\n " );
@@ -106,8 +106,8 @@ DATA SLFindByNum(SLType SL, int n){ // 根据序号返回数据元素
106
106
2)按照关键字查找结点
107
107
关键字可以是数据元素结构中的任意一项
108
108
``` java
109
- int SLFindByKey(SLType SL , String key){// 按关键字查询结点
110
- for (int i = 1 ; i <= SL . ListLen ; i++ ) {// 搜寻整个顺序表,返回和key匹配的结点
109
+ int SLFindByKey(SLType SL , String key){// 按关键字查询结点
110
+ for (int i = 1 ; i <= SL . ListLen ; i++ ) {// 搜寻整个顺序表,返回和key匹配的结点
111
111
if (SL . ListData [i]. key. compareTo(key)== 0 ){
112
112
return i;
113
113
}
@@ -118,7 +118,7 @@ int SLFindByKey(SLType SL, String key){ // 按关键字查询结点
118
118
## 显示所有结点
119
119
打印线性表中的所有数据元素
120
120
``` java
121
- int SLALL (SLType SL ){// 显示顺序表中的所有结点
121
+ int SLALL (SLType SL ){// 显示顺序表中的所有结点
122
122
123
123
for (int i= 1 ; i<= SL . ListLen ; i++ ){
124
124
System . out. printf(" (%s,%s,%d)\n " , SL . ListData [i]. key, SL . ListData [i]. name, SL . ListData [i]. age);
0 commit comments