#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct ListdatatypeNode { //定义单链表结点类型
datatype data;
struct ListNode next;
}node;
typedef node List;
List CreatbyQueue();//创建一个非空的带头结点单链表
List MergeAscend(List L1,List L2); //将L1和L2合并成一个升序的带头结单链表,,并用L1记录新的带头结点单链表;
int main()
{
List L1,L2;
datatype X;
node *p;
L1=CreatbyQueue();
L2=CreatbyQueue();
MergeAscend( L1, L2);
for ( p=L1->next; p; p = p->next ) printf("%d ", p->data);
return 0;
}
List CreatbyQueue()
{
List L,R,S;
datatype X;
int N;
L=R=(List)malloc(sizeof(node));
L->next=NULL;
scanf("%d",&N);
while (N–)
{
scanf("%d",&X);
S=(List)malloc(sizeof(node));
S->data=X;
R->next=S;
R=S;
}
R->next=NULL;
return L;
}
List MergeAscend(List L1,List L2)
{
List p1,p2,p3;
p3=L1;
p1=L1->next;
p2=L2->next;
//L3=p3=(List)malloc(sizeof(node));
while(p1&&p2)
{
if(p1->data< p2->data)
{
p3->next=p1;
p3=p3->next;
p1=p1->next;
}
else
{
p3->next=p2;
p3=p3->next;
p2=p2->next;
}
}
if(p1)
p3->next=p1;
if(p2)
p3->next=p2;
return L1;
}