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

2023-05-16

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

 

Problem Description

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

Input

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

Output

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

Sample Input


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

Sample Output


1 14 21 23 26 28 45 50 66 99 100  

Hint

不得使用数组!

Source

 

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

struct node *head1 , *head2 , *head3;
struct node
{
    int data;
    struct node *next;
};

void creat_list1(int n)
{
    head1 = (struct node *)malloc(sizeof (struct node));
    struct node *p ,*q;
    p = head1 ;
    p ->next = NULL;
    while(n--)
    {
        q = (struct node *)malloc(sizeof (struct node));
        scanf("%d" , &q->data);
        p ->next = q;
        p = q;
        p ->next = NULL;
    }
}

void creat_list2(int m)
{
     head2 = (struct node *)malloc(sizeof (struct node));
    struct node *p ,*q;
    p = head2 ;
    p ->next = NULL;
    while(m--)
    {
        q = (struct node *)malloc(sizeof (struct node));
        scanf("%d" , &q->data);
        p ->next = q;
        p = q;
        p ->next = NULL;
    }
}

void mergelist(struct node *head1 , struct node *head2)
{
    struct node *p , *q , *w;
    p = head1 ->next;
    q = head2 ->next;
   head3 = w = head1;
    while(p && q)
    {
        if (p ->data <= q ->data)
        {
            w ->next = p ;
            w = p;
            p = p ->next;
        }
        else
        {
            w ->next = q;
            w = q;
            q = q->next;
        }
    }
    if (p)
    {
        w ->next = p;
    }
    else if (q)
    {
        w ->next = q;
    }
}


void print()
{
    struct node *p;
    p = head1 ->next;
    while(p)
    {
        if (p ->next == NULL)
        printf("%d\n" , p->data );
        else
            printf("%d " , p->data);
        p = p->next;
    }
}
int main()
{
    int n , m;
    scanf("%d %d" , &n , &m);
    creat_list1(n);
    
    creat_list2(m);

    mergelist(head1 , head2);
    print();
    return 0;
    
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 数据结构实验之二叉树一:树的同构

    数据结构实验之二叉树一 xff1a 树的同构 Time Limit 1000 ms Memory Limit 65536 KiB Submit Statistic Problem Description 给定两棵树T1和T2 如果T1可以通
  • 数据结构实验之二叉树八:(中序后序)求二叉树的深度

    数据结构实验之二叉树八 xff1a xff08 中序后序 xff09 求二叉树的深度 Time Limit 1000 ms Memory Limit 65536 KiB Submit Statistic Problem Descriptio
  • 求二叉树的先序遍历

    求二叉树的先序遍历 Time Limit 1000 ms Memory Limit 65536 KiB Submit Statistic Problem Description 已知一棵二叉树的中序遍历和后序遍历 xff0c 求二叉树的先序
  • 数据结构上机测试4.1:二叉树的遍历与应用1

    数据结构上机测试4 1 二叉树的遍历与应用1 Time Limit 1000 ms Memory Limit 65536 KiB Submit Statistic Problem Description 输入二叉树的先序遍历序列和中序遍历序
  • 2、STM32点亮LED灯

    STM32寄存器和库函数点灯 一 寄存器操作1 新建工程 xff0c 新建一个目录存放以后所有的工程stmproject xff0c 在这个目录下新建文件夹寄存器点灯 xff0c 文件名为LED 2 新建文件main c并双击source
  • 数据结构实验之二叉树七:叶子问题

    数据结构实验之二叉树七 xff1a 叶子问题 Time Limit 1000 ms Memory Limit 65536 KiB Submit Statistic Problem Description 已知一个按先序输入的字符序列 xff
  • 数据结构实验之二叉树的建立与遍历

    数据结构实验之二叉树的建立与遍历 二叉树的基本操作 xff0c 中序遍历 xff0c 后序遍历 xff0c 前序遍历 xff0c 只是根节点输出的位置不同 xff0c 叶子结点 xff0c 深度 xff0c 需要自己理解 xff0c 也非常
  • 哈夫曼树

    什么是哈夫曼树 xff1f 让我们先举一个例子 判定树 xff1a 在很多问题的处理过程中 xff0c 需要进行大量的条件判断 xff0c 这些判断结构的设计直接影响着程序的执行效率 例如 xff0c 编制一个程序 xff0c 将百分制转换
  • 哈夫曼树的概念及其实现

    1 基本概念 a 路径和路径长度 若在一棵树中存在着一个结点序列 k1 xff0c k2 xff0c xff0c kj xff0c 使得 ki是ki 43 1 的双亲 xff08 1 lt 61 i lt j xff09 xff0c 则称此
  • 二叉排序树详解

    二叉排序树的介绍 二叉排序树为一颗二叉树 xff0c 或者为空 xff0c 或者满足如下条件 xff1a 如果它的左子树不为空 xff0c 那么左子树上的所有结点的值均小于它的根结点的值如果它的右子树不为空 xff0c 那么右子树上的左右结
  • 数据结构实验之队列一:排队买饭

    数据结构实验之队列一 排队买饭 这个题猛的一看可能会有点麻烦 xff0c 但是其实一点也不 xff0c 只要把每个情况用if条件语句分清就可以了 有一点栈的思想 Problem Description 中午买饭的人特多 食堂真是太拥挤了 买
  • bLue的文件查找器

    bLue的文件查找器 用结构体数组按顺序存储 xff0c 每次查找的时候只是判断最后的文件格式ex Problem Description bLue 的电脑里存了各种各样的文件 xff0c 随着文件越来越多 xff0c 查找文件也成了一个麻
  • 图的基本存储的基本方式二

    小编在网上看到好多博主的文章这道题都没有用结构体做 xff0c 数据量太大 xff0c 结构体也是一个不错的选择 但是结构体有一个不好的地方 xff0c 不能直接搜索 xff0c 只能每次从头开始搜索 xff0c 有点浪费时间 Proble
  • 图的基本存储的基本方式一

    这个题主要的是这个 stdbool h 这个函数 xff0c 还有bool这个数组 Problem Description 解决图论问题 xff0c 首先就要思考用什么样的方式存储图 但是小鑫却怎么也弄不明白如何存图才能有利于解决问题 你能
  • 图的基本存储的基本方式四

    一直不知道这个题为什么用链表可以A xff0c 但是结构体就会WA xff0c 如果有童鞋们知道 xff0c 希望能留下想法 xff0c 一起学习 xff0c 一起进步 Problem Description 解决图论问题 xff0c 首先
  • C# 超详细的WebService创建、发布与调用(VS2019)

    1 编写接口 这里我选择的是 ASP NET Web应用程序 NET Framework 填写好项目名称 选择项目位置以及所使用的框架 xff0c 这里我用的是 NET Framework 4 框架 xff0c 然后点击创建 继续点击创建
  • 图的基本存储的基本方式三

    图的基本存储的基本方式三 Problem Description 解决图论问题 xff0c 首先就要思考用什么样的方式存储图 但是小鑫却怎么也弄不明白如何存图才能有利于解决问题 你能帮他解决这个问题么 xff1f Input 多组输入 xf
  • 数据结构实验之栈与队列九:行编辑器

    数据结构实验之栈与队列九 xff1a 行编辑器 Problem Description 一个简单的行编辑程序的功能是 xff1a 接受用户从终端输入的程序或数据 xff0c 并存入用户的数据区 由于用户在终端上进行输入时 xff0c 不能保
  • 顺序表应用2:多余元素删除之建表算法

    顺序表应用2 xff1a 多余元素删除之建表算法 Time Limit 3 ms Memory Limit 600 KiB Submit Statistic Problem Description 一个长度不超过10000数据的顺序表 xf
  • 数据结构实验之链表四:有序链表的归并

    数据结构实验之链表四 xff1a 有序链表的归并 Problem Description 分别输入两个有序的整数序列 xff08 分别包含M和N个数据 xff09 xff0c 建立两个有序的单链表 xff0c 将这两个有序单链表合并成为一个