- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)