#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
} node, *LinkList;
node *StartList(node *L)
{
L = (node *)malloc(sizeof(node));
L->next = NULL;
return L;
}
void CreateList(node *L, int n)
{
node *p;
int i, j, tmp;
int a[n];
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (a[j] <= a[j + 1])
{
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
i = 0;
while (i != -1)
{
if (i != n)
{
p = (node *)malloc(sizeof(node));
p->data = a[i++];
p->next = L->next;
L->next = p;
}
else
i = -1;
}
}
void PrintList(node *L)
{
printf("整个单链表的元素为:");
while (L->next != NULL)
{
printf("%d ", L->next->data);
L = L->next;
}
printf("\n");
}
LinkList MergeLinkList(LinkList La, LinkList Lb)
{
LinkList pa, pb;
pa = La->next;
pb = Lb->next;
LinkList pc = La;
while (pa && pb)
{
if (pa->data <= pb->data)
{
LinkList p = pa->next;
pa->next = NULL;
pc->next = pa;
pc = pc->next;
pa = p;
}
else
{
LinkList p = pb->next;
pb->next = NULL;
pc->next = pb;
pc = pc->next;
pb = p;
}
}
pc->next = pa ? pa : pb;
return La;
}
int main()
{
node *L1, *L2;
int n, m;
printf("输入la长度:");
scanf("%d", &n);
printf("\n");
L1 = StartList(L1);
L2 = StartList(L2);
printf("构建la\n");
CreateList(L1, n);
PrintList(L1);
printf("\n");
printf("输入lb长度:");
scanf("%d", &m);
printf("\n");
printf("构建lb\n");
CreateList(L2, m);
PrintList(L2);
printf("\n");
printf("合并la和lb:");
MergeLinkList(L1, L2);
PrintList(L1);
return 0;
}