编辑代码

#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;
}