数据结构--双向链表的操作(增加和删除节点)
1)双向链表新增节点:
文章图片
第一步:首先找到插入位置,节点 s 将插入到节点 p 之前
第二步:将节点 s 的前驱指向节点 p 的前驱,即 s->prior = p->prior;
第三步:将节点 p 的前驱的后继指向节点 s 即 p->prior->next = s;
第四步:将节点 s 的后继指向节点 p 即 s->next = p;
第五步:将节点 p 的前驱指向节点 s 即 p->prior = s;
void insertNode(){
struct node{
int x;
node *prior;
node *next;
};
node *s;
node *p;
//插入节点
s->prior = p->prior;
p->prior->next = s;
s->next = p;
p->prior = s;
}
2)双向链表删除节点:
![数据结构--双向链表的操作(增加和删除节点)](https://img.it610.com/image/info8/ae940914319143aea1994955f8a20471.png)
文章图片
【数据结构--双向链表的操作(增加和删除节点)】第一步:找到即将被删除的节点 p
第二步:将 p 的前驱的后继指向 p 的后继,即 p->prior->next = p->next;
第三步:将 p 的后继的前驱指向 p 的前驱,即 p->next->prior = p->prior;
第四步:删除节点 p 即 delete p;
推荐阅读
- leetcode|leetcode 92. 反转链表 II
- 《数据结构与算法之美》——队列
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- Java深入了解数据结构之栈与队列的详解
- Java集合框架|Java集合框架 数据结构
- 数据结构与算法|【算法】力扣第 266场周赛
- 数据结构和算法|LeetCode 的正确使用方式
- LeetCode|LeetCode 876. 链表的中间结点
- 一个好的算法应该如何评测(数据结构学习1)
- XS-Java数据结构和算法目录总纲【2020-10-24~2021-2-12】