数据结构实验之链表四:有序链表的归并

数据结构实验之链表四:有序链表的归并

Time Limit: 1000MS Memory limit: 65536K

题目描述

分别输入两个有序的整数序列(分别包含M和N个数据),建立两个有序的单链表,将这两个有序单链表合并成为一个大的有序单链表,并依次输出合并后的单链表数据。

输入

第一行输入M与N的值;
第二行依次输入M个有序的整数;
第三行依次输入N个有序的整数。

输出

输出合并后的单链表所包含的M+N个有序的整数。

示例输入

6 5
1 23 26 45 66 99
14 21 28 50 100

示例输出

1 14 21 23 26 28 45 50 66 99 100

提示

不得使用数组!

#include<stdio.h>
#include<stdlib.h>

struct node
{
    int data;
    struct node *next;
};

struct node *merge(struct node *head1, struct node *head2)
{
    struct node *tail, *p1, *p2;
    p1 = head1->next;
    p2 = head2->next;
    tail = head1;
    free(head2);
    while(p1 && p2)
    {
        if(p1->data < p2->data)
        {
            tail->next = p1;
            tail = p1;
            p1 = p1->next;
        }
        else
        {
            tail->next = p2;
            tail = p2;
            p2 = p2->next;
        }
    }
    if(p1)
        tail->next = p1;
    else
        tail->next = p2;

    return (head1);

}
int main()
{
    int n, m, i;
    struct node *head1, *head2, *tail1, *tail2, *p1, *p2, *turn;
    head1 = (struct node *)malloc(sizeof(struct node));
    head2 = (struct node *)malloc(sizeof(struct node));
    tail1 = head1;
    tail2 = head2;
    head1->next = NULL;
    head2->next = NULL;
    scanf("%d %d", &n, &m);
    for(i=0; i<n; i++)
    {
        p1 = (struct node *)malloc(sizeof(struct node));
        scanf("%d", &p1->data);
        tail1->next = p1;
        p1->next = NULL;
        tail1 = p1;
    }
    for(i=0; i<m; i++)
    {
        p2 = (struct node *)malloc(sizeof(struct node));
        scanf("%d", &p2->data);
        tail2->next = p2;
        tail2 = p2;
        p2->next = NULL;
    }

   turn = merge(head1, head2);
   turn = turn->next;

     for(i=0; i<n+m; i++)
    {
        printf("%d", turn->data);
        if(i==n+m-1)
            printf("
");
        else
            printf(" ");

        turn = turn->next;
    }

    return 0;
}


每天训练发现我比别人做的好慢,但是理解的更深刻,如果一开始学一个新知识点就搜模板,那么这样的人是走不远的,毕业之后带走的只有思维,什么荣誉,奖杯都已经不重要了。
原文地址:https://www.cnblogs.com/6bing/p/3931260.html