- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在线教务辅导网: 更多课程配套课件资源请访问在线教务辅导网 如果要删节的不是第一个结点,使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 ④.如果新结点要插入到表尾: P1→next=P0 P0→next=NULL 89101 89.5 89103 90 89107 85 NULL 89109 head p0 p1 p2 插入结点的函数insert( ): struct student *insert(head,stud)
文档评论(0)