数据结构总结1_扩展:循环链表插入、删除情况分析

在线性表的总结中,随着后续做题复习,发现循环链表的插入删除总结并不充分,在此做补充。

循环单链表:将表中尾结点的指针域改为指向表头结点,整个链表形成一个。由此从表中任一结点出发均可找到链表中其他结点。 特点:可以循环查找

循环双链表:形成两个环。可以循环查找;可以通过头结点快速找到尾结点。插入删除:需要修改两个方向的指针

注意:插入、删除在节点之前还是之后,需要修改两个方向的指针。注意看题目要求。

首先将总结的代码以表格的形式展现。

p之后插入s

p之前插入s

删除p的后继s

删除p

s->next=p->next;

p->next=s;

s->prior=p;

s->next->prior=s;

s->prior=p->prior;

p->prior=s;

s->next=p;

s->prior->next=s;

p->next->next->prior=p;

p->next=p->next->next;

 

p->prior->next=p->next;

p->next->prior=p->prior;

接下来进行分别的讲解。

1,插入操作

(1)p节点之后进行插入

操作1,2必须在4前,防止b及b的后继丢失。和单链表的操作相似。

 

操作如下:

1,s->next=p->next;

2,p->next=s;

3,s->prior=p;

4,s->next->prior=s;

(2)p节点之前进行插入

1,s->prior=p->prior;

2,p->prior=s;

3,s->next=p;

4,s->prior->next=s;

2,删除操作

(1)删除p的后继s

1,p->next->next->prior=p;

2,p->next=p->next->next;

必须先1,后2,防止后续c节点丢失。

(2)删除p

1,p->prior->next=p->next;

2,p->next->prior=p->prior;

1,2没有先后顺序之分,都能找到后续节点。可以1,2,也可以2,1.

发布了38 篇原创文章 · 获赞 20 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_40165004/article/details/99872735