- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
*寻找插入位置也是一个循环:从链表的首表元开始考察,因越大的数插在越后面,如果输入整数大于当前表元的值,需继续考察下一个表元;否则,新表元插在当前表元之前。由于单链表上无法简单地完成插在某表元之前的工作,寻找循环引入指向当前要考察的表元的指针变量v和指向当前要考察的表元前一个表元的指针变量u;插入在v所指表元之前,改为插入在u所指表元之后。*intNode*createSortList(intn){intNode*u,*v,*p,*head=NULL;/*u指向上一个,v指向下一个*/intk;printf(Inputdata.\n);for(k=0;kn;k++){p=(intNode*)malloc(sizeof(intNode));printf(请输入一个整型数据:);scanf(%d,p-value);/*输入的整数存入新表元*/v=head; /*从首表元开始寻找插入位置*/while(v!=NULLp-valuev-value)//寻找要插入的位置{u=v;v=v-next;}//保存前驱表元指针,并考察下一个表元if(v==head)head=p;/*新表元插在首表元之前*/elseu-next=p;//新表元插在u所指表元之后,v所指表元之前p-next=v; } returnhead; /*返回链表的头指针head*/}*【例7.13】编制一个函数,实现将已知单链表的表元链接顺序颠倒。即使单链表的第1个表元变为最末一个表元,第2个表元变为最后第2个表元,……,最后一个表元变为第1个表元。
依旧设链表为整数链表,且设链表是带辅助表元的。图7-15表示链表颠倒前和颠倒后的链表状态。图7-15链表颠倒示意图*完成颠倒操作是一个循环过程。假设从第1个表元开始颠倒,每循环一次颠倒一个表元的链接关系,直至颠倒了最后一个表元。如图7-16的所示。假设某次循环前已颠倒了前(i-1)个表元,这些颠倒好的部分链表的头指针为v1,哪些还未颠倒的部分链表的头指针为v2。其中有向线段就表示前(i-1)个表元颠倒之后的表元联接状态。本次循环欲颠倒第i个表元的链接关系,颠倒后的表元联接状态用有向弧线表示。为实现从颠倒前状态变为颠倒后的状态,可用以下四个赋值操作实现:p=v2-next;//保护v2所指表元的后继指针v2-next=v1;//使v2所指表元的后继表元是v1所指表元v1=v2;/*调整v1*/v2=p;/*调整v2*/*图7-16第i个表元颠倒前、后链表状态变化图颠倒循环开始前,指针v1的值为NULL,表示已颠倒的部分链表为空。指针v2指向单链表的首表元,表示未完成颠倒的是整个链表。*【例7.6】编写无序学生单链表上的查找函数searchSLink()。函数应设两个形参:学生链表的头指针要寻找的学生的学号。函数的寻找过程是一个循环,设循环工作变量为v。v的初值是链表的头指针,循环条件是v!=NULLv-number!=num。因为还没有找到指定学号的学生,循环体要做的工作:让v指向下一个学生。寻找循环结束后,函数返回v。如果找到,v指向找到的表元;如果未找到,v的值是NULL,表示链表中没有要找的学生。*stuS*searchSLink(stuS*h,intnum){stuS*v=h;while(v!=NULLv-number!=num)v=v-next;returnv;}*如果单链表的表元是按表元值从小到大顺序链接的,在顺序考察链表表元的查找循环中,当发现还有表元,并且该表元的值比寻找值小时,应继续查找,准备去考察下一个表元。反之,若不再有表元,或当前表元值不比寻找值小,则查找应结束。查找循环结束后,仅当还有表元,并且当前表元的值与寻找值相等情况下,才算找到,函数返回当前表元的指针。否则,链表中没有要寻找的表元,函数应该返回NULL。●有序单链表上的查找*【例7.7】编写学号从小到大有序学生链表上查找指定学号的函数searchSOLink()。【解题思路】与函数searchSLink()一样,也应设链表的头指针和要寻找学号两个形参。函数的寻找循环也是
您可能关注的文档
最近下载
- 新视野大学英语(第四版)视听说教程2(思政智慧版).pdf VIP
- 杭州西奥电梯XO-CON4342电气原理图纸接线图ALMCB.pdf
- GA_T 1788.3-2021 公安视频图像信息系统安全技术要求 第3部分:安全交互.doc VIP
- 2025至2030年中国微型电子天平市场现状分析及前景预测报告.docx
- GA_T 1788.2-2021 公安视频图像信息系统安全技术要求 第2部分:前端设备.doc VIP
- GA_T 1788.1-2021 公安视频图像信息系统安全技术要求 第1部分:通用要求.doc VIP
- 备稿六步范文,备稿六步.doc VIP
- 空间信息考古-洞察及研究.docx VIP
- 丝绸之路(南道)屯戍遗址空间考古:历史脉络与当代探索.docx
- KEYENCE基恩士IV3 系列 用户手册 (PC 软件篇).pdf
原创力文档


文档评论(0)