引入
我们知道如何在单链表中插入一个结点,那么现在就再看看如何删除一个结点,删除结点需要注意什么呢?
思考删除单链表中的结点
我们知道链表是一环扣一环,一个压一个。所以,要删除其中的某个结点,只需要将其前一个结点的 next 指针域指向该结点的下一结点即可。
- p->next=p->next->next;
- q=p->next , p->next=q->next
- 上面两种方式都是可以的,思路都是跳过要删除的这个,直接将前一个的指向指向后一个的地址。
删除单链表元素的算法
我们根据上面的思路,来看看用代码如何实现:
- 指向:声明一个节点 p 指向链表中的第一个结点
- 遍历:初始化 j=1,j<i ,P 的指针不断向后移动,j++
- 失败:到了链表末尾,p 为空,表示第 i 个元素不存在
- 成功:成功,将需要删除的结点 p->next 赋值给 q
- 然后执行 p->next = q->next
- 最后 free 掉即可。
代码实现
还是用 C 语言来动态生成单链表,然后再删除其第二个结点
1 |
|
伪代码实现
1 |
|
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。