《王道》第11章 链表之双链表

                        《王道》第11章 链表之双链表

目录

1.双链表的插入(以插入到p结点前为例)

2.双链表的删除

3.代码

4.补充


1.双链表的插入(以插入到p结点前为例)

 

第一步:首先找到插入位置,节点 s 将插入到节点 p 之前

第二步:将节点 s 的前驱指向节点 p 的前驱,即 s->prior = p->prior;

第三步:将节点 p 的前驱的后继指向节点 s 即 p->prior->next = s;

第四步:将节点 s 的后继指向节点 p 即 s->next = p;

第五步:将节点 p 的前驱指向节点 s 即 p->prior = s;

2.双链表的删除

第一步:找到即将被删除的节点 p

第二步:将 p 的前驱的后继指向 p 的后继,即 p->prior->next = p->next;

第三步:将 p 的后继的前驱指向 p 的前驱,即 p->next->prior = p->prior;

第四步:删除节点 p 即 delete p;

3.代码

参考博客

4.补充

     在有序双向链表中,定位删除一个元素的平均时间复杂度为O(n)。

    解析:因为链表不支持随机存取,故元素查找需要顺序查找,时间复杂度为O(n),删除操作时间复杂度为O(1)。

    若某链表最常用的操作是在最后一个结点之后插入一个结点和删除最后一个结点,则采用带头结点的双向循环链表存储最节省时间。

    解析:在最后一个结点之后插入结点,需要快速定位尾结点,删除最后一个结点,需要快速定位尾结点的前一个结点。A带头结点的双循环链表可通过头结点的prior指针访问尾结点,且由于是双循环链表,故可通过尾结点访问尾结点的前一结点。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值