- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西工大姜学峰C语言课件
封面 链表 链表概述 链表概述 链表概述 链表概述 用结构体建立链表 链表概述 链表 简单链表 例11.7 简单链表 简单链表 简单链表 简单链表 链表 建立链表 处理动态链表所需的函数 建立链表 处理动态链表所需的函数 建立链表 处理动态链表所需的函数 建立链表 建立动态链表 建立链表 建立链表 建立链表 建立链表 建立链表 建立链表 链表 输出链表 输出链表 输出链表 链表 链表删除操作 对链表的删除操作 链表删除操作 链表删除操作 链表删除操作 链表删除操作 链表删除操作 链表删除操作 链表删除操作 链表插入操作 对链表的插入操作 链表插入操作 链表插入操作 链表插入操作 链表插入操作 链表插入操作 链表程序 封底 ①要删的是第一个结点(p1的值等于head的值,如图11-20(a)那样),则应将p1-next赋给head。这时head指向原来的第二个结点。第一个结点虽然仍存在,但它已与链表脱离,因为链表中没有一个结点或头指针指向它。虽然p1还指向它,它仍指向第二个结点,但仍无济于事,现在链表的第一个结点是原来的第二个结点,原来第一个结点已“丢失” ,即不再是链表中的一部分了。 ②如果要删除的不是第一个结点,则将p1-next赋给p2-next,见图1120(d)。p2-next原来指向p1指向的结点(图中第二个结点),现在p2-next改为指向p1-next所指向的结点(图中第三个结点)。p1所指向的结点不再是链表的一部分。 还需要考虑链表是空表(无结点)和链表中找不到要删除的结点的情况。 删除结点的函数del: struct student *del(struct student *head,long num) { struct student *p1,*p2; if (head==NULL){printf(\nlist null!\n);goto end;} p1=head; while(num!=p1-num p1-next!=NULL) {p2=p1;p1=p1-next;} if(num==p1-num) { if(p1==head) head=p1-next; else p2-next=p1-next; printf(delete:%ld\n,num); n=n-1; } else printf(%ld not been found!\n,num); end:return(head); } 对链表的插入是指将一个结点插入到一个已有的链表中。 为了能做到正确插入,必须解决两个问题: ① 怎样找到插入的位置; ② 怎样实现插入。 先用指针变量p0指向待插入的结点,p1指向第一个结点。 将p0-num与p1-num相比较,如果p0-num>p1- num ,则待插入的结点不应插在p1所指的结点之前。此时将p1后移,并使p2指向刚才p1所指的结点。 再将p1-num与p0-num比,如果仍然是p0-num大,则应使p1继续后移,直到p0-p1- num为止。这时将p0所指的结点插到p1所指结点之前。但是如果p1所指的已是表尾结点,则p1就不应后移了。如果p0- num比所有结点的num都大,则应将p0所指的结点插到链表末尾。 如果插入的位置既不在第一个结点之前,又不在表尾结点之后,则将p0的值赋给p2-next,使p2-next指向待插入的结点,然后将p1的值赋给p0-next,使得p0-next指向p1指向的变量。 插入结点的函数insert struct student *insert(struct student *head, struct student *stud) {struct student *p0,*p1,*p2; p1=head;p0=stud; if(head==NULL) {head=p0; p0-next=NULL;} else{ while((p0-nump1-num) (p1-next!=NULL)) { p2=p1; p1=p1-next; } 链表概述 简单链表 建立链表 输出链表 链表操作 链表是一种常见的重要的数据结构,是动态地进行存储分配的一种结构。 链表的组成: 头指针:存放一个地址,该地址指向一个元素 结点:用户需要的实际数据和链接节点的指针 图11-10 struct student { int num; float score; struct student *next ; }; 其中成员num和score用来存放结点中的有用数据(用户需要用到的数据),next是指针类型的成员,它指向struct student类型数据(这就是next所在的结构体类型) 图11-11 链表概述 简单链表 建立链表
您可能关注的文档
- 英语音标认读(最全版).ppt
- 苏科版 奇妙的物理现象.ppt
- 英语口语课ppt 第四纪冰河时代.ppt
- 药品生产统计质量控制方法.pptx
- 英语小讲堂第102讲.ppt
- 荷塘月色示范课件.ppt
- 英文介绍德国Introduction_to_Germany.ppt
- 莲湖区小学简介.doc
- 获取靶基因的方法.ppt
- 获取网络信息的策略与技巧-四中李万荣.ppt
- 上海海洋大学《海洋环境分析技术》课件-21化学发光分析法.pdf
- 上海海洋大学《海洋环境分析技术》课件-20分子荧光分析法.pdf
- 上海海洋大学《海洋环境分析技术》课件-22色谱分离过程.pdf
- 上海海洋大学《海洋环境分析技术》课件-25气相色谱仪与固定液.pdf
- 上海海洋大学《海洋环境分析技术》课件-24色谱定性定量方法.pdf
- 上海海洋大学《海洋环境分析技术》课件-26气相色谱检测器.pdf
- 上海海洋大学《海洋环境分析技术》课件-29液相色谱固定相与流动相.pdf
- 上海海洋大学《海洋环境分析技术》课件-27气相色谱分离条件的选择.pdf
- 上海海洋大学《海洋环境分析技术》课件-28液相色谱仪器与类型.pdf
- 上海海洋大学《海洋环境分析技术》课件-3 原子光谱和分析光谱.pdf
文档评论(0)