- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2. 链表结点的删除: 约定删除指定学号的结点(且学号顺序排列),如删除 学号89103这个结点.首先从P1指向的第一个结点开始,检 查该结点是否等于约定的学号.如果相等,删除之,否则后移一个结点. 设定义二个指针变量:P1 ,P2 , 先使P1指向第一个结点: 89101 89.5 89103 90 head 89107 85 null p1 ( 图一 ) 如果要删节的不是第一个结点,使p2指向检查过的结点(p2=p1),再使p1后移一个结点,(p1=p2→next). 89101 89.5 89103 90 head 89107 85 null p2 p1 p1 一次一次使p1后移,并检查,直到找到要删除的结点, 或找不到相应的删除结点. 如果找到了相应的要删除的结点,又要分二种情况: (a).要删除的是第一个结点.(P1值等于head,如下图). 则应将P1→next赋给head(即: head=P1→next). 89101 89.5 89103 90 head 89107 85 null p1 head (b).如果要删除的结点不是第一结点,则应将P1→next 赋给P2→next.(也即:P2→next=P1→next) 89101 89.5 89103 90 head 89107 85 null p2 p1 此外还要考虑: 空表,或找不到相应的结点情况. 删除结点的函数del( )如下: struct student *del(head,num) struct student *head,long num; {struct student *P1,*P2; if(head= =NULL) { printf(“\n list null!”);goto end; } p1=head; while(num!=P1→num P1→next!= NULL) { P2=P1; /* P1指向的不是所要找的结点,且还有结点.*/ P1=P1→next;} /* P1后移一个结点 if(num= =P1→num) /*找到了 {if(P1= =head) /*要删除的是第一个结点 head=P1→next; /*把第二个节点地址赋予head else P2→next=P1→next; /*删除的不是第一个结点,则将下一个结点地址赋予前一结点地址*/ printf(“delete:%ld\n”,num); n=n-1; } else printf(“%ld not been found!\n”, num); end: return (head); } 89101 89.5 89107 85 head p1 null 5. 链表结点的插入: 设:链表中各结点的学号(num)由小到大排列. ①.用p1指向链表第一个结点,p0指向待插入的新结点 89101 89.5 89103 90 89107 85 null p1 head 89102 p0 ②. 将P0→num与P1→num相比较,如果前者大于后者, 则将P1后移,并使P2指向刚才P1所指的结点. 89101 89.5 89103 90 89107 85 null head 89102 p0 p1 p2 p1 ③. 再将p0→num与p1→num相比较,如果仍是前者大, 则 p1应后移.直至: p0→num ≤ p1→num; 这时将P0所指结点插到P1所指结点之前(左边). 如果:(1). P1所指结点已是表尾,则P1不应后移. (2). P0→num比所有结点的num都大,则应使新结 点放在表尾. 现设判断后,新结点应插入链表中间(非头,非尾), 则应有如下操作: p2→next=p0; p0→next=p1; (见下页) 89101 89.5 head p2 89103 90 p1 89107 85 null 89102 p0 p2→next=p0 p0→next=p1 如果插入位置为第一个结点之前,则应: head=p0; p0→next=p1; /*注: 此句谭书p282程序中遗漏*/ 89101 89.5 89103 90 89107 85 null p0 89100 head p1 ④
您可能关注的文档
- C#程序设计基础 熊壮 第7章:文件读写新.ppt
- C#程序设计教程 刘瑞新 第5章 数组、结构与集合新.ppt
- C#程序设计教程 刘瑞新 第7章 泛型新.ppt
- C#程序设计教程 刘瑞新 第10章 使用ADO.NET访问数据库新.ppt
- C#程序设计教程 刘瑞新 第11章 使用DataSet访问数据库新.ppt
- C#程序设计实用教程 李正夫 第03章新.ppt
- C#程序设计实用教程 李正夫 第04章新.ppt
- C#程序设计实用教程 李正夫 第05章新.ppt
- C#程序设计实用教程 李正夫 第07章新.ppt
- C#程序设计实用教程 李正夫 第08章新.ppt
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)