#include<iostream>
using namespace std;
typedef struct student
{
int scores;
student *next;
}*Linklist,Link;
void creat(Linklist &L,int n);
void printlist(Linklist &L);
void guibing(Linklist &L1,Linklist &L2,Linklist &L3);
int main()
{
Linklist p1,p2,p3;
cout<<"你想创建几个节点"<<endl;
int n;
cin>>n;
creat(p1,n);
cout<<endl;
printlist(p1);
cout<<"你想创建几个节点"<<endl;
cin>>n;
creat(p2,n);
printlist(p2);
cout<<endl;
guibing(p1,p2,p3);
printlist(p3);
}
void creat(Linklist &L,int n)
{
L=new Link;
L->next=NULL;
Linklist s;
Linklist r=L;
int i;
for(i=0;i<n;i++)
{
s=new Link;
cin>>s->scores;
r->next=s;
r=s;
}
r->next=NULL;
}
void guibing(Linklist &L1,Linklist &L2,Linklist &L3)
{
Linklist p1=L1->next;
Linklist p2=L2->next;
L3=new Link;
L3->next=NULL;
Linklist s,t;
t=L3;
while(p1!=NULL&&p2!=NULL)
{
if(p1->scores<p2->scores)
{
s=new Link;
s->scores=p1->scores;
p1=p1->next;
t->next=s;
t=s;
t->next=NULL;
}
else if(p1->scores>p2->scores)
{
s=new Link;
s->scores=p2->scores;
p2=p2->next;
t->next=s;
t=s;
t->next=NULL;
}
else
{
s=new Link;
s->scores=p1->scores;
p1=p1->next;
p2=p2->next;
t->next=s;
t=s;
t->next=NULL;
}
}
if(p1==NULL)
{
while(p2!=NULL)
{
s=new Link;
s->scores=p2->scores;
t->next=s;
t=s;
p2=p2->next;
}
t->next=NULL;
}
else if(p2==NULL)
{
while(p1!=NULL)
{
s=new Link;
s->scores=p1->scores;
t->next=s;
p1=p1->next;
t=s;
}
t->next=NULL;
}
else
{
return ;
}
}
void printlist(Linklist &L)
{
Linklist p=L->next;
while(p!=NULL)
{
cout<<p->scores<<" ";
p=p->next;
}
}
单链表的归并算法
最新推荐文章于 2022-07-30 09:16:02 发布