- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构》循环链表双向链表
* * 数据结构 2.3 线性表的链式存储表示和实现 四、循环链表 L a1 ai-1 an ∧ ai p 从单链表中某结点p出发如何找到其前驱? 将单链表的首尾相接,将终端结点的指针域由空指针改为指向头结点,构成单循环链表,简称循环链表。 ①循环链表中增设了表头结点,统一了空表和非空表的运算; 说明 L 空循环链表 L a1 ai-1 an ai 非空循环链表 ②从循环链表中的任何一个结点的位置都可以找到其他所有结点,而单链表做不到; 说明 L a1 ai-1 an ai 循环条件:p!=NULL?p!=L p-next!=NULL?p-next!=L 循环链表中没有明显的尾端 如何避免死循环 ③对循环链表,有时不给出头指针,而是给出尾指针,可以更方便的找到线性表的第一个元素和最后一个元素结点。 说明 rear a1 ai-1 an ai 如何查找开始结点和终端结点? 开始结点:rear-next-next 终端结点:rear 例如:将两个链表首尾相连: Ta a1 an Tb b1 bn a1 an b1 bn Ta Tb ④循环链表与线性链表操作的主要差别是算法中循环结束的条件。 说明 H rear 判空条件:H==H-next; 判空条件:rear==rear-next; L 判空条件:L-next==NULL; a1 an b1 bn ① p ② ③ ④ Ta Tb Ta a1 an Tb b1 bn 举例 a1 an b1 bn ① p ② ③ ④ Ta Tb LinkList Connect(LinkList Ta,LinkList Tb) {//假设A、B都是非空的单循环链表 //①p存表头结点 //②Tb表头连结Ta表尾 //③释放Tb表头结点 //④修改指针 return Tb; } 举例 p=Ta-next; Ta-next=Tb-next-next; free(Tb-next); Tb-next=p; 2.3 线性表的链式存储表示和实现 五、双向链表 如何求结点p的直接前驱,时间性能? 为什么可以快速求得结点p的后继? 如何快速求得结点p的前驱? L a1 ai-1 an ∧ ai p 2.3 线性表的链式存储表示和实现 五、双向链表 特点:有两个指针域,一个指向直接后继,另一 个指 向直接前趋。 L A B C ∧ prior data next 结点结构: data:数据域,存储数据元素; prior:指针域,存储该结点的前趋结点地址; next:指针域,存储该结点的后继结点地址。 2.3 线性表的链式存储表示和实现 五、双向链表 typedef struct DuLNode{ ElemType data; struct DuLNode *prior; struct DuLNode *next;}DuLNode, *DuLinkList; L A B C ∧ L A B C L A B C ∧ 非空的双向循环链表 非空的双向链表 d-next-prior=d-prior-next=d 理解 A C B 双向链表的插入运算 s p ① ② ③ ④ 2.3 线性表的链式存储表示和实现 五、双向链表 A C B s p ① ② ③ ④ s-prior=p-prior; p-prior-next=s; s-next=p; p-prior=s; 2.3 线性表的链式存储表示和实现 五、双向链表 双向链表的插入运算 A C B s p ① ③ ② ④ 2.3 线性表的链式存储表示和实现 五、双向链表 双向链表的插入运算 A C B s p ① ③ ② ④ 2.3 线性表的链式存储表示和实现 五、双向链表 s-prior=p-prior; s-next=p; p-prior-next=s; p-prior=s; 双向链表的插入运算 双向链表的删除运算 2.3 线性表的链式存储表示和实现 五、双向链表 (p-prior)-next=p-next; (p-next)
文档评论(0)