#include<stdio.h>
#include<malloc.h>
typedef struct node
{
int data;
node *next;
}LinkList;
void InitList(LinkList *&L)
{
L = (LinkList *)malloc(sizeof(LinkList));
L->next = NULL;
}
void CreateList(LinkList *&L,int n,int a[])
{
LinkList *r = L, *s;
int i;
for(i = 0; i < n; i++)
{
s = (LinkList *)malloc(sizeof(LinkList));
s->data = a[i];
r->next = s;
r = s;
}
r->next = NULL;
}
void Union(LinkList *&L1,LinkList *L2,LinkList *L3)
{
LinkList *p = L2->next, *q = L3->next, *r = L1,*s;
while(p && q)
{
if(p->data <= q->data)
{
s = (LinkList *)malloc(sizeof(LinkList));
s->data = p->data;
r->next = s;
r = s;
p = p->next;
}
else
{
s = (LinkList *)malloc(sizeof(LinkList));
s->data = q->data;
r->next = s;
r = s;
q = q->next;
}
}
if(p)
r->next = p;
else
r->next = q;
}
void DispList(LinkList *L)
{
if(L->next == NULL)
{
printf("\n");
return ;
}
LinkList *p = L->next;
while(p->next != NULL)
{
printf("%d ",p->data);
p = p->next;
}
printf("%d\n",p->data);
}
int main()
{
LinkList *L1,*L2,*L3;
int m, n, a[101], b[101], i;
while(scanf("%d",&n) != EOF)
{
InitList(L1);
InitList(L2);
InitList(L3);
for(i = 0; i < n; i++)
scanf("%d",&a[i]);
CreateList(L2,n,a);
scanf("%d",&m);
for(i = 0; i < m; i++)
scanf("%d",&b[i]);
CreateList(L3,m,b);
Union(L1,L2,L3);
DispList(L1);
}
return 0;
}
问题 1674: 算法2-2:有序线性表的有序合并
最新推荐文章于 2021-06-14 20:22:46 发布