📄 04071402224.cpp
字号:
//使用原空间把递增排列的链表A和B合并为按元素递减排列的链表C
#include<iostream.h>
typedef int elemtype;
#include"04071402llist.h"
void list_merge_reverse(llist &A,llist &B)
{
llist pa,pb,pre,p,q;
pa=A->next;pb=B->next;pre=A; //pa和pb分别指向A,B的当前元素
while(pa&&pb)
{
if(pa->data<=pb->data)
{
pre->next=pa;pre=pa;pa=pa->next;
}
else
{
pre->next=pb;pre=pb;pb=pb->next;
}
}
if(!pa)
pre->next=pb;
else
pre->next=pa;
if(A->next) //判断是否为空表
{
p=A->next->next;A->next->next=NULL;
while(p) {q=p->next;p->next=A->next;A->next=p;p=q;}
}
}
void main() //主函数
{
llist A,B;
elemtype *a,*b;
int m,n;
cout<<"请输入链表存储数据的个数:"<<endl;
cin>>m;
a=new elemtype[m];
cout<<"请依次输入链表所存储的元素:"<<endl;
for(int i=0;i<m;i++)
cin>>a[i];
listcreat(A,m,a);
cout<<"请输入链表存储数据的个数:"<<endl;
cin>>n;
b=new elemtype[n];
cout<<"请依次输入链表所存储的元素:"<<endl;
for(i=0;i<n;i++)
cin>>b[i];
listcreat(B,n,b);
list_merge_reverse(A,B);
if(A->next)
{
cout<<"合并后的链表为:"<<endl;
listtraverse(A);
}
else
cout<<"合并后的链表为空表!";
cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -