zoukankan      html  css  js  c++  java
  • 数据结构实验之链表四:有序链表的归并-sdut

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

    Time Limit: 1000MS Memory Limit: 65536KB

    Problem Description

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

    Input

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

    Output

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

    Example Input

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

    Example Output

    1 14 21 23 26 28 45 50 66 99 100


    实验代码
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    typedef struct mode_t
    {
        int data;
        struct mode_t *next;
    }play;
    
    int main()
    {
        int n, m;
        play *head1, *head2, *p, *q, *t1,*t2,*tail1, *tail2;
        head1=(play *)malloc(sizeof(play));
        head2=(play *)malloc(sizeof(play));
        t1=(play *)malloc(sizeof(play));
        t2=(play *)malloc(sizeof(play));
        t1->next=NULL;
        t2->next=NULL;
        tail1=head1;
        tail1->next=NULL;
        tail2=head2;
        tail2->next=NULL;
        scanf("%d%d",&n, &m);
        while(n--)
        {
            p=(play *)malloc(sizeof(play));
            scanf("%d",&p->data);
            tail1->next=p;
            p->next=t1;
            tail1=p;
        }
        while(m--)
        {
            p=(play *)malloc(sizeof(play));
            scanf("%d",&p->data);
            tail2->next=p;
            p->next=t2;
            tail2=p;
        }
        p=head1->next;
        q=head2->next;
        tail1=head1;
        while(q->next!=NULL&&p->next!=NULL)
        {
            if(q->data<p->data)
            {
                tail1->next=q;
                tail1=q;
                q=q->next;
            }
            else
            {
                tail1->next=p;
                tail1=p;
                p=p->next;
    
            }
        }
        if(q->next!=NULL)
        {
            tail1->next=q;
        }
        if(p->next!=NULL)
        {
            tail1->next=p;
        }
        tail1=head1->next;
        while(tail1->next->next!=NULL)
        {
            printf("%d ",tail1->data);
            tail1=tail1->next;
        }
        printf("%d
    ",tail1->data);
        return 0;
    }
    
    
  • 相关阅读:
    SpringBoot+mybatis的驼峰命名转换不生效
    vue3 ts遇到的问题
    阿里巴巴的Java 工程脚手架
    Mybatis获取插入值的ID
    Bootstrap的Modal与WebUploader联用的问题及办法
    Flex布局专题
    23种设计模式
    排序算法-Java实现快速排序算法
    中间件面试专题:kafka高频面试问题
    中间件面试专题:RabbitMQ高频面试问题
  • 原文地址:https://www.cnblogs.com/lxhax/p/6628966.html
Copyright © 2011-2022 走看看