- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
双向链表和循环链表第二章:线性表主讲:周翔
什么是双向链表什么是双向链表?
什么是双向链表上一节学习了单链表,但是单链表有一个缺点,无法快速访问前驱结点,当查找到某一个元素时,如果想查找其前驱结点,需要再次从头遍历。因此,有人提出在结点中再添加一个指向前驱的指针,如此便构成了双向链表。
什么是双向链表下图为一个双向链表,表中第一个结点的前驱指针pre指向了NULL,最后一个结点的后继结点next指向了NULL。在双向链表中,通过一个结点可以找到它的后继结点,也可以找到它的前驱结点。
双向链表双向链表:在单链表的每个结点里再增加一个指向其前趋的指针域prior。这样形成的链表中就有两条方向不同的链,我们称之为双(向)链表(DoubleLinkedList)。双链表的结点结构后继指针域predatanext前驱指针域数据域
双向链表双向链表的结构定义:ADTDNode{ //结点类型定义ElemTypedata //数据域Nodepre,next //指针域}ADTDNode,DoubleList
双向链表结点指向p-prep-nextprenextp
双向链表——基本运算前插操作算法描述:欲在双向链表第i个结点之前插入一个的新的结点,则指针的变化情况如图所示。pse......ab①②③④
双向链表——基本运算删除操作算法描述:欲删除双向链表中的第i个结点,则指针的变化情况如图所示。abcp②①……
什么是循环链表什么是循环链表?
循环链表循环链表(CircularLinkedList)是首尾相接的一种链表,它尾结点的后继指针又指向链表的第一个结点,这样形成了一个环。对于循环链表,从表中的任何一个结点出发,能找到其它所有的结点。特点:将单链表最后一个结点的指针域由NULL改为指向头结点或线性表中的第一个结点
La1……ai-1aianLa1……ai-1aianrear*(rear-next)*rear空链表带头结点的一般形式带尾结点的一般形式循环链表
循环单链表假设链表长度为n在表头插入或删除,时间复杂性O(1)在表尾插入或删除,时间复杂性O(n)a1……ai-1aianL带头结点的一般形式
循环单链表假设链表长度为n在表头插入或删除,时间复杂性O(1)在表尾插入或删除,时间复杂性O(1)a1……ai-1aianrear*(rear-next)*rear带尾结点的一般形式所以,在循环单链表中附设尾指针有时比附设头指针会使操作变得更简单
循环单链表——查找查找成功查找不成功LL3131484815155757查找15???查找25????pppppppp
循环链表中没有明显的尾端,如何避免死循环?循环单链表——查找循环条件:p的下一个指针指向表头从循环链表中的任何一个结点的位置都可以找到其他所有结点,而单链表做不到
循环双链表
循环双链表排序循环双链表
总结相对于单链表来说,双向链表要复杂一些,因为它多了一个前驱指针,所以对应插入和删除操作的实现,要格外小心。在插入新元素时,先判断链表是否为空,如果为空,则将元素插入到头结点后,然后将其指针指向自身;如果不为空,根据插入的位置作出相应操作。
您可能关注的文档
- 数据结构——基于Python语言(微课版) 课件 T1_C语言基础.pptx
- 数据结构——基于Python语言(微课版) 课件T1_绪论(什么是数据结构).pptx
- 数据结构——基于Python语言(微课版) 课件T2_线性表(顺序表).pptx
- 数据结构——基于Python语言(微课版) 课件T3_线性表(单链表).pptx
- 数据结构——基于Python语言(微课版) 课件T5_线性表(应用与比较).pptx
- 数据结构——基于Python语言(微课版) 课件T7_栈与队列(队列).pptx
- 数据结构——基于Python语言(微课版) 课件T10_数组与广义表(矩阵).pptx
- 数据结构——基于Python语言(微课版) 课件T11_数组与广义表(广义表).pptx
- 数据结构——基于Python语言(微课版) 课件T12_基于线性表的查找算法.pptx
- 数据结构——基于Python语言(微课版) 课件T13_基于线性表的排序算法.pptx
- 数据结构——基于Python语言(微课版) 课件T16_树(遍历与应用).pptx
- 数据结构——基于Python语言(微课版) 课件T17_树(转换、构建与线索化).pptx
- 数据结构——基于Python语言(微课版) 课件T18_基于树的查找算法.pptx
- 数据结构——基于Python语言(微课版) 课件T19_基于树的排序算法.pptx
最近下载
- 畜牧兽医职业生涯规划书 .pdf VIP
- 2024-2025四川遂宁遂宁中学高一上期中化学试题【答案版】.docx VIP
- 15分钟课堂教学.pdf VIP
- 职业技术学院民族音乐与舞蹈专业人才培养方案.docx VIP
- Tolteq 脉冲器 操作手册.pdf VIP
- 人教版部编版小学五年级语文上册《忆读书》教学ppt课件.pptx VIP
- DB50T1310-2022丰都麻辣鸡加工技术规程.pdf VIP
- 2024-2025四川遂宁遂宁中学高一上期中数学试题【答案版】.pdf VIP
- 河北省政府采购评审专家培训验收考核题(6月21日)车上试题【含答案】2025.pdf VIP
- 华东理工大学电路原理与分析期末复习.ppt VIP
原创力文档


文档评论(0)