#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}Node,*LinkList;
void InitList(LinkList *L)
{
L=(Node)malloc(sizeof(LinkList));
(*L)->next=NULL;
}
void creatList(LinkList L,int data)
{
Node *r=L,q;
while(r->next)
{
r=r->next;
}
q=(Node)malloc(sizeof(Node));
q->data=data;
q->next=r->next;
r->next=q;
}
LinkList Listhebing(LinkList A,LinkList B)//合并链表A,B
{
Node *pa,*pb,*r;
pa=A->next;
pb=B->next;
LinkList C;
C=A;
C->next=NULL;
r=C;
while(pa!=NULL&&pb!=NULL)
{
if(pa->data<=pb->data)
{
r->next=pa;
r=pa;
pa=pa->next;
}
else
{
r->next=pb;
r=pb;
pb=pb->next;
}
}
if(pa)
r->next=pa;
else
r->next=pb;
return C;
}
void Listnz(LinkList L)//链表的逆置
{
Node *p,*q;
p=L->next;
L->next=NULL;
while(p){
q=p;
p=p->next;
q->next=L->next;
L->next=q;
}
}
void printF(LinkList L)
{
Node *q;
q=L->next;
while(q)
{
printf("%d ",q->data);
q=q->next;
}
}
int main()
{
int elenuma,elenumb,data;
scanf("%d %d",&elenuma,&elenumb);
LinkList A,B,C;
InitList(&A);
InitList(&B);
for(int i=0;i<elenuma;i++)
{
scanf("%d",&data);
creatList(A,data);
}
for(int i=0;i<elenumb;i++)
{
scanf("%d",&data);
creatList(B,data);
}
Listhebing(A,B);
printF(C);
Listnz(C);
printF(C);
return 0;
}