66## 准备数据
77准备在顺序表操作中需要用到的变量及数据结构等。
88``` java
9- class DATA { // 定义数据元素结构
9+ class DATA { // 定义数据元素结构
1010 String key; // 结点的关键字
1111 String name;
1212 int age;
@@ -19,7 +19,7 @@ class DATA{ // 定义数据元素结构
1919class SLType {
2020 static final int MAXLEN = 100 ;
2121 DATA [] ListData = new DATA [MAXLEN + 1 ]; // 保存顺序表的结构数组
22- int ListLen ; // 顺序表已存结点的数量
22+ int ListLen ; // 顺序表已存结点的数量
2323}
2424```
2525## 初始化顺序表
@@ -39,25 +39,25 @@ int SLLength(SLType SL){ // 返回顺序表的元素数量
3939## 插入结点
4040插入结点就是在线性表L的第i个位置插入一个新的结点,使得其后的结点编号依次加1。
4141``` java
42- int SLInsert(SLType SL , int n, DATA data){ // 插入结点到顺序表中间的位置
42+ int SLInsert(SLType SL , int n, DATA data){ // 插入结点到顺序表中间的位置
4343
44- if (SL . ListLen >= MAXLEN ){ // 顺序表已满
44+ if (SL . ListLen >= MAXLEN ){ // 顺序表已满
4545 System . out. println(" 顺序表已满,不能插入结点!\n " );
4646 return 0 ;
4747 }
4848
49- if (n< 1 || n> SL . ListLen - 1 ){ // 校验插入位置的合法性
49+ if (n< 1 || n> SL . ListLen - 1 ){ // 校验插入位置的合法性
5050 System . out. println(" 插入元素序号错误,不能插入元素!\n " );
5151 return 0 ;
5252 }
5353
5454 for (int i= SL . ListLen ;i>= n;i-- ){ // 将插入位置n后续的结点都向后移动一位
5555 SL . ListData [i+ 1 ]= SL . ListData [i];
5656 }
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+ }
6161```
6262## 追加结点
6363追加结点并不是一个基本的数据结构运算,其可以看作插入结点的一种特殊形式,相当于在顺序表的末尾新增一个数据结点。由于追加结点的特殊性,其代码实现比插入结点要简单,因为不必进行大量数据的移动。
@@ -74,7 +74,7 @@ int SLAdd(SLType SL, DATA data){ // 增加元素到顺序表尾部
7474## 删除结点
7575删除结点即删除线性表L中的第i个结点,使得其后的所有结点编号依次减1。删除一个结点之后,线性表L的长度将变为n-1。删除结点和插入结点类似,都需要进行大量数据的移动。
7676``` java
77- int SLDelete(SLType SL , int n){ // 按位删除顺序表的结点
77+ int SLDelete(SLType SL , int n){ // 按位删除顺序表的结点
7878
7979 if (n< 1 || n> SL . ListLen + 1 ){ // 删除结点序号不正确
8080 System . out. println(" 删除结点序号错误,不能删除结点!\n " );
@@ -94,7 +94,7 @@ int SLDelete(SLType SL, int n){ // 按位删除顺序表的结点
94941)按照序号查找结点
9595按照序号查找结点是顺序表查找结点最常用的方法,这是因为顺序表的存储本身就是一个数组。
9696``` java
97- DATA SLFindByNum(SLType SL , int n){ // 根据序号返回数据元素
97+ DATA SLFindByNum(SLType SL , int n){ // 根据序号返回数据元素
9898
9999 if (n< 1 || n> SL . ListLen + 1 ){
100100 System . out. println(" 结点序号错误,不能返回结点!\n " );
@@ -106,8 +106,8 @@ DATA SLFindByNum(SLType SL, int n){ // 根据序号返回数据元素
1061062)按照关键字查找结点
107107关键字可以是数据元素结构中的任意一项
108108``` 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匹配的结点
111111 if (SL . ListData [i]. key. compareTo(key)== 0 ){
112112 return i;
113113 }
@@ -118,7 +118,7 @@ int SLFindByKey(SLType SL, String key){ // 按关键字查询结点
118118## 显示所有结点
119119打印线性表中的所有数据元素
120120``` java
121- int SLALL (SLType SL ){ // 显示顺序表中的所有结点
121+ int SLALL (SLType SL ){ // 显示顺序表中的所有结点
122122
123123 for (int i= 1 ; i<= SL . ListLen ; i++ ){
124124 System . out. printf(" (%s,%s,%d)\n " , SL . ListData [i]. key, SL . ListData [i]. name, SL . ListData [i]. age);
0 commit comments