引入
我们知道了如何初始化一个静态链表,并且知道如何在静态链表中插入一个结点,今天我们来看看如何删除一个结点,并将删除得结点 Free 。
思路
我们先想一下,如果要移除静态链表中的一个结点,会发生什么。
- 该结点的上一个结点找不到移除的这个结点了,链表断了
- 移除的结点内得数据还有,游标指向的是其原来的下个结点
- 移除的结点成了
备用链表
中的一个结点,0下标的第一个可用结点也需要修改
所以,我们总结如下得思路
- 移除结点,找到前一结点,指向移除结点的后一结点
- 清空移除的结点内的数据
- 移除结点的游标改为0下标指向的第一个可用结点得下标
- 0下标指向的第一个结点为移除的结点
代码
1 |
|
输出结果
下标1的游标是:2,数据是:111
下标2的游标是:0,数据是:222
主要就是删除后得一系列操作
- 把链表继续链好
- 把空结点归置到备用链表中去
- 把头结点指向删除的空结点
注意
刚刚发现我上一篇犯了一个错误,我错误的通过下标遍历数组中的 data 是否为0来判断链表得长度和输出链表中得值。
忘记了如果中间某个节点删除了,遍历数组就没意义了,链表一定要顺着链
来寻找,不能使用下标遍历的方法。
伪代码实现
1 |
|
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。