有序链表的合并(数据结构---单链表)

来源:互联网 发布:深入java虚拟机百度云 编辑:程序博客网 时间:2024/04/29 00:06
#include<stdio.h>#include<stdlib.h>struct  Node{    int Data;    struct Node *next;};typedef struct Node *List;typedef struct Node Node;/*链表的建立*/List Read(){    int N;    scanf("%d", &N);    List L = (List)malloc(sizeof(Node));    List tmp = L;    for (int i = 0; i < N; i++)   //尾插    {        List p = (List)malloc(sizeof(Node));        scanf("%d", &p->Data);   //默认输入顺序从小到大输入        p->next = NULL;        tmp->next = p;        tmp = p;    }    return (L);}List Merge(List L1, List L2){    List L = (List)malloc(sizeof(Node));    List p1 = L1->next;    List p2 = L2->next;    List p3;    p3 = L1;    while (p1&&p2)    {        if (p1->Data <= p2->Data)        {            p3->next = p1;            p3 = p1;            p1 = p1->next;        }        else        {            p3->next = p2;            p3 = p2;            p2 = p2->next;        }    }    p3->next = p1 ? p1 : p2;    L->next = L1->next;    return(L);}void Print(List L){    List p = L->next;    if (!p)        printf("NULL ");    while (p)    {        printf("%d ", p->Data);        p = p->next;    }}int main(){    List L1, L2, L;      L1 = Read();    L2 = Read();    L = Merge(L1, L2);    Print(L);    system("pause");    return 0;}
原创粉丝点击