历年链表考题及答案.docVIP

  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文档。上传文档
查看更多
历年链表考题及答案

历年链表考题及答案 [2005秋II.14] 设已建立了两条单向链表,这两链表中的数据已按从小到大的次序排好,指针h1和h2分别指向这两条链表的首结点。链表上结点的数据结构如下: struct node{ int data; node *next; }; 以下函数node *Merge(node *h1, node *h2)的功能是将h1和h2指向的两条链表上的结点合并为一条链表,使得合并后的新链表上的数据仍然按升序排列,并返回新链表的首结点指针。 算法提示:首先,使newHead和q都指向首结点数据较小链表的首结点,p指向另一链表首结点。其次,合并p和q所指向的两条链表。在q不是指向链尾结点的情况下,如果q的下一个结点数据小于p指向的结点数据,则q指向下一个结点;否则使p1指向q的下一个结点,将p指向的链表接到q所指向的结点之后,使q指向p所指向的结点,使p指向p1所指向的链表。直到p和q所指向的两条链表合并结束为止。注意,在合并链表的过程中,始终只有两条链表。 [函数] (4分) node * Merge(node *h1, node *h2) { node *newHead, *p, *p1; // 使newHead和q指向首结点数据较小链表的首结点,p指向另一链表首结点 if( (27) ) { newHead=h1; p=h2; } // h1-datah2-data else { newHead=h2; p=h1; } node *q=newHead; // 合并两条链表 while( q-next) { if( q-next-data p-data ) (28) ; // q=q-next else { (29) ; // p1=q-next q-next=p; q=p; p=p1; } } q-next=p; (30) ; // return newNead } [2005春II.11] 设已建立一条单向链表,指针head指向该链表的首结点。结点的数据结构如下: struct Node{ int data; Node *next; }; 以下函数sort(Node *head)的功能是:将head所指向链表上各结点的数据按data值从小到大的顺序排序。 算法提示:初始时,使p指向链表的首结点,从p之后的所有结点中找出data值最小的结点,让p1指向该结点。将p指向的结点的data值与p1指向的结点的data值进行交换。让p指向下一个结点,依此类推,直至p指向链表的最后一个结点为止。 [程序] (4分) Node *sort(Node *head) { Node *p=head, *p1,*p2; if(p==NULL) return head; while(p-next!=NULL) { p1=p; p2=p-next; while(p2!=NULL) { if( ) // p2-data p1-data p1=p2; p2=p2-next; } if(p!=p1) { int t; t=p-data; p-data = ; // p1-data = t; // p1-data } ; // p=p-next } return head; } [2004秋II.11] 已建立一条无序链表,head指向链首。链表上结点的数据结构为: struct Node { double num; Node * next; }; 以下函数sort(Node *head)的功能为:将参数head所指向链表上的各个结点,按num值的升序排序,并返回排序后链表的链首指针。 算法提示:先让h指向空链,依次从head所指向的链表上取下一个结点,然后将取下的结点插入到已排序的h所指向的链表上。 Node *sort(Node *head) { if (head== 0 ) return head; Node *h,*p; h=0; while(head) { p=head; (27) ; //(27)head = head-next或head = p-next Node *p1,*p2; if (h == 0 ) { h=p; (28) ; //(28)p-next = 0 或h-next =

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档