@@ -25,7 +25,7 @@ class SLType{
25
25
## 初始化顺序表
26
26
在使用顺序表之前,首先要创建一个空的顺序表,即初始化顺序表。这里,只需设置顺序表的结点数量ListLen为0即可,并没有清空一个顺序表。这样,后面添加的数据元素将从顺序表的第一个位置存储,如果原来已有数据,也会后来的数据被覆盖。
27
27
``` java
28
- void SLInit(SLType SL ){ // 初始化为空表
28
+ void SLInit(SLType SL ){ // 初始化为空表
29
29
SL . ListLen = 0 ;
30
30
}
31
31
```
@@ -39,9 +39,9 @@ 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
}
@@ -54,15 +54,15 @@ int SLInsert(SLType SL, int n, DATA data){ // 插入结点到顺序表中间的
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
57
+ SL . ListData [n]= data; // 插入结点
58
+ SL . ListLen ++ ; // 顺序表节点数量加1
59
+ return 1 ; // 成功插入,返回1
60
60
}
61
61
```
62
62
## 追加结点
63
63
追加结点并不是一个基本的数据结构运算,其可以看作插入结点的一种特殊形式,相当于在顺序表的末尾新增一个数据结点。由于追加结点的特殊性,其代码实现比插入结点要简单,因为不必进行大量数据的移动。
64
64
``` java
65
- int SLAdd(SLType SL , DATA data){ // 增加元素到顺序表尾部
65
+ int SLAdd(SLType SL , DATA data){ // 增加元素到顺序表尾部
66
66
if (SL . ListLen >= MAXLEN ){ // 顺序表已满
67
67
System . out. println(" 顺序表已满,不能再添加结点!\n " );
68
68
return 0 ;
@@ -76,12 +76,12 @@ int SLAdd(SLType SL, DATA data){ // 增加元素到顺序表尾部
76
76
``` java
77
77
int SLDelete(SLType SL , int n){ // 按位删除顺序表的结点
78
78
79
- if (n< 1 || n> SL . ListLen + 1 ){ // 删除结点序号不正确
79
+ if (n< 1 || n> SL . ListLen + 1 ){ // 删除结点序号不正确
80
80
System . out. println(" 删除结点序号错误,不能删除结点!\n " );
81
81
return 0 ;
82
82
}
83
83
84
- for (int i= n;i< SL . ListLen ;i++ ){ // 将插入位置n后续的结点都向前移动一位
84
+ for (int i= n;i< SL . ListLen ;i++ ){ // 将插入位置n后续的结点都向前移动一位
85
85
SL . ListData [i]= SL . ListData [i+ 1 ];
86
86
}
87
87
SL . ListLen -- ;
@@ -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 " );
@@ -107,7 +107,7 @@ DATA SLFindByNum(SLType SL, int n){ // 根据序号返回数据元素
107
107
关键字可以是数据元素结构中的任意一项
108
108
``` java
109
109
int SLFindByKey(SLType SL , String key){ // 按关键字查询结点
110
- for (int i = 1 ; i <= SL . ListLen ; i++ ) { // 搜寻整个顺序表,返回和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