- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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;
}
您可能关注的文档
最近下载
- TXEEPIA 001-2023 重点行业企业项目碳排放评价技术规范.pdf VIP
- 2025年人教版三年级上册道德与法治全册知识点(新教材).pdf
- 海燕出版社六年度级劳动与技术上册教案.pdf VIP
- TCWEC29-2021水利水电工程清污机制造安装及验收规范(OCR).pdf VIP
- 第8课《回忆鲁迅先生》课件 (共45张ppt) 2025-2026学年统编版语文八年级上册.pptx VIP
- 初中美术折纸教学课件.ppt VIP
- 爱护公物,从我做起 主题班会课件(共30张PPT).pptx VIP
- 第二单元 单元复习课件七年级语文上册.ppt VIP
- 2025年广东高职高考语文试卷及答案.doc VIP
- 小马宝莉英文第四季台词S04E18 Maud Pie.pdf VIP
原创力文档


文档评论(0)