数据结构精品课件-循环单链表与双向链表.pptVIP

数据结构精品课件-循环单链表与双向链表.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 2 章 线性表 单链表 单链表上的基本运算 循环链表 双向链表 静态链表 第 2 章 线性表 循环链表(Circular Linked List): 是一个首尾相接的链表。 特点:将单链表最后一个结点的指针域由NULL改为指向 头结点或线性表中的第一个结点,就得到了单链形式的循 环链表,并称为循环单链表。在循环单链表中,表中所有 结点被链在一个环上。 第 2 章 线性表 循环链表(Circular Linked List) 例2-3 有两个带头结点的循环单链表LA、LB,编写一个算法, 将两个循环单链表合并为一个循环单链表,其头指针为LA。 先找到两个链表的尾,并分别由指针p、q指向它们,然后将 第一个链表的尾与第二个表的第一个结点链接起来,并修改 第二个表的尾q,使它的链域指向第一个表的头结点。 p-next=LB-next; q-next=LA; free(LB); 第 2 章 线性表 循环链表(Circular Linked List) 算法实现1 LinkList merge_1(LinkList LA,LinkList LB) { Node *p, *q; p=LA; q=LB; while (p-next!=LA) p=p-next; while (q-next!=LB) q=q-next; p-next=LB-next; free(LB); q-next=LA; return(LA); } 时间复杂度为 O(n) 第 2 章 线性表 循环链表(Circular Linked List) 例2-3 有两个采用带尾指针的循环链表LA、LB,编写一个算 法,将两个循环单链表合并为一个循环单链表,返回其尾指针。 执行时间可降低为O(1)。 RA-next=RB-next-next; RB-next=p; free(RB-next); 第 2 章 线性表 循环链表(Circular Linked List) 算法实现2 LinkList merge_2(LinkList RA,LinkList RB) { Node *p; p=RA-next; RA-next=RB-next-next; free(RB-next); RB-next=p; return(RB); } 返回 第 2 章 线性表 双向链表(Double Linked List) 在单链表的每个结点里再增加一个指向其前趋的指针域prior。这样形成的链表中就有两条方向不同的链,我们称之为双 ( 向) 链表。 结构定义: typedef struct Dnode { ElemType data; struct DNode *prior,*next; }DNode, *DoubleList; 定义: 第 2 章 线性表 双向链表(Double Linked List) 示意图: 第 2 章 线性表 双向链表(Double Linked List) 前插操作: s p × ① ① p-prior-next=s; ② ② s-prior=p-prior; 顺序可以 颠倒吗? × ③ ③ p-prior=s; ④ ④ s-next=p; 顺序可以 颠倒吗? 顺序可以 颠倒吗? 第 2 章 线性表 2.3线性表的链式存储 双向链表(Double Linked List)前插操作 算法实现: int DlinkIns(DoubleList L,int i,ElemType e) { DNode *s,*p; p=search ( L , i); if(p==NULL) return ERROR; s=(DNode*)malloc(sizeof(DNode)); if (!s) return ERROR; s-data=e; s-prior=p-prior; p-prior-next=s; s-next=p; p-prior=s; return OK; } 第 2 章 线性表 双向链表(Double Linked List) 删除操作: p × ① p-prior-next=p-next; ① × ② ② p-next-prior=p-prior; free(p); 第 2 章

文档评论(0)

极研教育 + 关注
官方认证
服务提供商

SAC证券行业专业人员持证人

承接各类可行性研究报告撰写,详情加v:JiYan-edu

认证主体 天津西青区极研智慧智能科技有限公司
IP属地天津
领域认证 该用户于2023年10月01日上传了SAC证券行业专业人员
统一社会信用代码/组织机构代码
91120111MA07276K52

1亿VIP精品文档

相关文档