#include
using namespace std;
template
struct LNode
{ DT data;
LNode next;
};
//初始化单链表
template
bool InitList(LNode
{ L=new LNode;
if(!L)exit(1);
L->next=NULL;
return true;
}
//创建单链表
template //尾插法
bool CreateList(LNode*&L,int n)
{ LNode *p;
p=L;
LNode s;
for(int i=1;i<=n;i++)
{
s=new LNode;
if(!s)
return false;
cin>>s->data;
s->next=p->next ;
p->next=s;
p=s;
}
return true;
}
//销毁单链表
template
void DestroyList(LNode&L)
{
LNode *p;
while(L)
{ p=L;
L=L->next;
delete p;
}
L=NULL;
}
//遍历输出表
template
void DispList(LNode *&L)
{
LNode *p;
p=L->next ;
while(p)
{
cout<data;
p=p->next;
}
}
//从小到大排序
template
void sort(LNode *&L)
{
LNode *p,*q,*min;
for(p=L->next;p!=NULL;p=p->next)
{
min=p;
for(q=p->next;q!=NULL;q=q->next)
{
if(q->datadata)
min=q;
}
if(min!=p)
{
int temp=p->data;
p->data=min->data;
min->data=temp;
}
}
}
int main()
{ int i;
LNode *LA;
LNode *LB;
LNode *LC;
InitList(LA);
InitList(LB);
InitList(LC);
cout<<"请输入创建链表LA的元素个数:";
cin>>i;
cout<<"请依次输入集合A元素为:";
CreateList(LA,i);
cout<<"有序表LA= ";
sort(LA);
DispList(LA);
cout<<endl;
cout<<"请输入创建链表LB的元素个数:";
cin>>i;
cout<<"请依次输入集合B元素为:";
CreateList(LB,i);
cout<<"有序表LB= ";
sort(LB);
DispList(LB);
LNode<int> *pa=LA->next;
LNode<int> *pb=LB->next;
if(LB->next==NULL)
DispList(LA);
if(LA->next==NULL)
DispList(LB);
LNode<int> *pc=LC;
while(pa && pb)
{
if(pa ->data <= pb->data)
{
pc->data = pa->data ;
pa = pa->next;
}
else
{
pc->data =pb->data;
pb = pb->next;
}
}
while(pa)
{
pc->next = pa;
pc= pa;
pa = pa->next;
}
while(pb)
{
pc->next = pb;
pc= pb;
pb = pb->next;
}
CreateList(LC,pc->data);
cout<<"有序表归并表LC= ";
for(pc=LC->next;pc!=NULL;pc=pc->next)
{
cout<<pc->data;
}
cout<<endl;
return 0;
}