//使用链表是因为本题需要排序
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct node
{
int n;
struct node* pnext;
}NODE,*PNODE;
PNODE creat_(int e)
{
int num;
PNODE head,p,q;
head=(PNODE)malloc(sizeof(NODE));
if(head==NULL)
{
cout<<"fault";
}
head->pnext=NULL;
q=head;
while(e--)
{
p=(PNODE)malloc(sizeof(NODE));
cin>>num;
p->n=num;
q->pnext=p;
q=p;
}
q->pnext=NULL;
return head;
}
void traverse(PNODE head)
{
PNODE q;
q=head->pnext;
while(q!=NULL)
{
cout<<q->n<<' ';
q=q->pnext;
}
}
PNODE union_(PNODE head1,PNODE head2)
{ PNODE p,q,pra,prb;
q=head1->pnext;p=head2->pnext;
pra=head1;
while(p!=NULL&&q!=NULL)
{
if(p->n>q->n)
{
pra=q;
q=q->pnext;
}
else if(p->n==q->n)
{
pra=q;
q=q->pnext;
prb=p;
p=p->pnext;
pra->pnext=prb;
prb->pnext=q;
}
else if(p->n<q->n)
{
prb=p;
p=p->pnext;
pra->pnext=prb;
prb->pnext=q;
pra=pra->pnext;
}
}
if(p!=NULL)
{
pra->pnext=p;
}
return head1;
}
int main()
{
PNODE list1,list2,l3;
list1=creat_(5);
list2=creat_(5);
l3=union_(list1,list2);
traverse(l3);
return 0;
}
61-11
最新推荐文章于 2022-05-11 21:27:56 发布