数据结构--双向链表的操作(增加和删除节点)

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)双向链表删除节点:
数据结构--双向链表的操作(增加和删除节点)
文章图片

【数据结构--双向链表的操作(增加和删除节点)】第一步:找到即将被删除的节点 p
第二步:将 p 的前驱的后继指向 p 的后继,即 p->prior->next = p->next;
第三步:将 p 的后继的前驱指向 p 的前驱,即 p->next->prior = p->prior;
第四步:删除节点 p 即 delete p;

    推荐阅读