链表-单项链表+双向链表-概念及其时间复杂度简述

本文详细介绍了单项链表和双向链表的基本结构,比较了它们在查询、插入和删除操作中的时间复杂度,强调了双向链表的双向性和灵活性优势。
摘要由CSDN通过智能技术生成

链表可分为单项链表和双向链表,每一个元素称之为结点Node,物理存储单位上属于非连续、非顺序的存储结构。其中:

单项链表每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。记录下个结点地址的指针叫作后继指针next。链表中的某个节点是B,B的下一个节点为C,表示为B.next==C。查询操作的时候,只有在查询头节点的时候不需要遍历链表,时间复杂度是O(1)。查询其他节点时需要遍历链表,时间复杂度是O(n)。

 插入和删除操作的时候,只有在添加和删除头节点的时候不需要遍历链表,时间复杂度是O(1),添加或删除其他结点需要遍历链表找到对应节点后,才能完成新增或删除节点,时间复杂度是O(n)。

双向链表呢,它支持两个方向,每个结点不仅布置有一个后继指针next指向后面的节点,还有一个前驱指针prev指向前面的结点。相比单链表,双向链表需要额外的空间来存储前驱结点的地址。并且双向链表支持双向遍历,更加灵活。

 对于查询操作,双向链表查询头尾节点的时间复杂度是O(1),平均的查询时间复杂度是O(n),给定节点找前驱结点的时间复杂度为O(1)。对于增删操作,头尾结点增删的时间复杂度为O(1),其他部分节点增删的时间复杂度是O(n),给定节点增删的时间复杂度为O(1)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值