#include<iostream>
using namespace std;
#define MAXSIZE 100
typedef struct Node
{
int data;
struct Node *next;
}LNode;
void creatList(LNode *&L)
{
L=new LNode;
L->next=NULL;
}
void inputList(LNode *&L,int n)
{
int i=0;
LNode *cp;
cp=L;
for(i;i<n;i++)
{
LNode *p;
p=new LNode;
cout<<"输入第"<<i+1<<"数据.";
cin>>p->data;
p->next=NULL;
cp->next=p;
cp=p;
}
cout<<"输入成功!"<<endl;
return;
}
void output(LNode *&L)
{
LNode *cp;
cp=L->next;
int i=1;
for(cp;cp!=NULL;cp=cp->next)
{
cout<<"第"<<i<<"个数据为:"<<cp->data;
cout<<endl;
i++;
}
cout<<endl;
return;
}
void mergeList(LNode *&LA,LNode *&LB,LNode *&LC)
{
LNode *pa;
LNode *pb;
LNode *pc;
pa=LA->next;
pb=LB->next;
LC=LA;
pc=LC;
while(pa && pb)
{
if(pa->data <= pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
return;
}
int main()
{
LNode *LA;
LNode *LB;
LNode *LC;
int a;
int b;
cout<<"表 A 填充的数据个数为:";
cin>>a;
cin.get();
cout<<"表 B 填充的数据个数为:";
cin>>b;
creatList(LA);
creatList(LB);
cout<<"表 A 的输入为:"<<endl;
inputList(LA,a);
cout<<"表 B 的输入为:"<<endl;
inputList(LB,b);
cout<<"表 A 的展示如下:"<<endl;
output(LA);
cout<<"表 B 的展示如下:"<<endl;
output(LB);
cout<<"对表A和表B进行合并."<<endl;
mergeList(LA,LB,LC);
cout<<"合并后的表展示如下:"<<endl;
output(LC);
return 0;
}
本代码采用的是C++进行编译,对两个有序的单链表进行合并,并展示合并后的结果,两个有序的链表并没有直接展示,代码定义了inputList()函数来对你已知的数据进行输入得到你想要的单链表,在进行合并得到新的组合的单链表,可用output()将其显示出来,看是否为自己想要的结果。
且本代码采用的输入方法是前插法,后插发可查看相关文章----------数据结构单链表的创建插入及相关操作