@@ -96,11 +96,12 @@ CLType CLFindNode(CLType head, String key){
96
96
}
97
97
```
98
98
在上述代码中,输入参数head为链表的头引用,输入参数key是用来在链表中进行查找结点的关键字。程序中,首先从链表头引用开始,对结点进行逐个比较,直到查找到。找到关键字相同的结点后,返回该结点的引用,方便调用程序处理。
99
+
99
100
## 插入结点
100
101
插入结点就是在链表中间部分的指定位置增加一个结点。插入结点的操作步骤如下:
101
102
1 . 分配内存空间,保存新增的结点。
102
- - 找到要插入的逻辑位置,也就是那两个结点之间。
103
- - 使新增节点指向原插入位置所指向的结点,并修改插入位置结点的引用,使其指向新增结点。
103
+ 2 . 找到要插入的逻辑位置,也就是那两个结点之间。
104
+ 3 . 使新增节点指向原插入位置所指向的结点,并修改插入位置结点的引用,使其指向新增结点。
104
105
``` java
105
106
CLType CLInsertNode(CLType head, String findKey, DATA nodeData){ // 插入关键字结点
106
107
CLType node, nodetemp;
@@ -119,11 +120,12 @@ CLType CLInsertNode(CLType head, String findKey, DATA nodeData){ // 插入关键
119
120
return head;
120
121
}
121
122
```
123
+
122
124
## 删除结点
123
125
删除结点就是将链表中的某个结点数据删除。删除结点的操作步骤如下:
124
126
1 . 查找需要删除的结点。
125
- - 使前一结点指向当前结点的下一结点。
126
- - 删除结点。
127
+ 2 . 使前一结点指向当前结点的下一结点。
128
+ 3 . 删除结点。
127
129
``` java
128
130
int CLDeleteNode(CLType head, String key){ // 删除关键字结点
129
131
CLType htemp,tempnode;
@@ -134,7 +136,7 @@ int CLDeleteNode(CLType head, String key){ // 删除关键字结点
134
136
tempnode = head;
135
137
while (htemp != null ){
136
138
if (htemp. nodeData. key. compareTo(key)== 0 ){ // 遍历查找
137
- tempnode. nextNode = htemp. nextNode; // 当前结点的引用指向下一个结点的引用,以此删除htemp结点
139
+ tempnode. nextNode = htemp. nextNode; // 当前结点的引用指向下一个结点的引用,以此删除htemp结点
138
140
return 1 ;
139
141
}
140
142
tempnode = htemp; // 保存当前结点
@@ -144,6 +146,7 @@ int CLDeleteNode(CLType head, String key){ // 删除关键字结点
144
146
}
145
147
```
146
148
注意,此时被删除结点仍然保存在内存中,接着执行赋值null操作,用来释放被删除节点所占用的内存空间。
149
+
147
150
## 计算链表长度
148
151
统计链表结构中结点的数量,由于链表结构在物理上不是连续存储的,因此,需要遍历整个链表来对结点数量进行累加。
149
152
``` java
0 commit comments