单链表的合并.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文档。上传文档
查看更多
[问题描述] 假设有两个按元素值递增次序排列的线性表,均以单链表形式存储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并计算表长。要求利用原来两个单链表的结点存放归并后的单链表。 [基本要求]用链式存储结构实现存储 #include stdafx.h #include iostream using namespace std; struct Node { int num ; Node *next ; }; Node* Create() //创建单链表 { int n=0; Node *p1,*p2,*head; p1=p2=new Node; head=NULL; while (p1-num!=0) { if (n==1) { head=p1; } else p2-next=p1; p2=p1; p1=new Node; cinp1-num; if(p1-num=p2-nump1-num!=0) { cout重新输入按递增排序的单链表:\n; cinp1-num; } n++; } p2-next=NULL; return head; } void Print(Node *head) //输出链表 { Node* p=head; while (p) { coutp-num ; p=p-next; } coutendl; } Node *ReverseList(Node *head) //单链表的逆转 { Node *p,*q,*r; p=head; q=p-next; while (q) { r=q-next; q-next=p; p=q; q=r; } head-next=NULL; head=p; return head; } Node *MergeList(Node *head1,Node *head2) //合并单链表,降序 { if(head1==NULL) return head2; if(head2==NULL) return head1; Node *head; if(head1-num=head2-num) { head=head1; head1=head1-next; } else { head=head2; head2=head2-next; } Node *temp=head; while ( head1 != NULL head2 != NULL) { if ( head1-num = head2-num ) { temp-next = head1 ; head1 = head1-next ; temp =temp-next; } else { temp-next = head2; head2 = head2-next ; temp =temp-next; } } if (head1 == NULL) temp-next = head2; if (head2 == NULL) temp-next = head1; return head; } int Count(Node *head)//求表长 { Node* p=head; int i=0; while (p) { i++; p=p-next; } return i; } int main(int argc, char* argv[]) { Node *p1,*p2; p1,p2=new Node; cout创建单链表1,递增排序,0作为结束符!\n; p1=Create(); cout单链表1为\n; Print(p1); cout*********************************************\n; cout创建单链表2,递增排序,0作为结束符!\n; p2=Create(); cout单链表2为:\n; Print(p2); cout*********************************************\n; cout合并单链表为(降序排列):\n; Node *p3; p3=MergeList(ReverseList(p1),ReverseList(p2)); Print(p3); cout合并单链表表长为:Count(p3)endl; system(pause); return 0; }

文档评论(0)

考试教学资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档