7-1 两个有序链表序列的合并(编程题)

2023-11-19

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。
输入格式:
输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。

输出格式:
在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。

输入样例:

1 3 5 -1
2 4 6 8 10 -1

输出样例:

1 2 3 4 5 6 8 10

答案

#include<stdio.h>
int main()
{
    int a[1000],b[1000],c[1000];
    int la=0,lb=0;
    int i,j,k,m,n,t;
    while(scanf("%d",&a[la])!=EOF)
    {
        if(a[la]==-1) break;
        else la++;
    }
    while(scanf("%d",&b[lb])!=EOF)
    {
        if(b[lb]==-1) break;
        else lb++;
    }
    for(i=la; i<la+lb; i++)
    {
        a[i]=b[i-la];
    }
    for(i=0; i<la+lb-1; i++)
        for(j=0; j<la+lb-1; j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    if(la+lb==0)printf("NULL\n");
    else
    {
        for(i=0; i<la+lb; i++)
        {
            if(i==0)printf("%d",a[i]);
            else printf(" %d",a[i]);
        }
    }

}
#include<stdio.h>
#include<stdlib.h>
typedef struct Node*List;
struct Node
{
    int data;
    struct Node *Next;
};
List InitList();
void print(List l);
void read(List l);
void combine(List l1,List l2,List l3);
int main()
{
    List l1,l2,l3;
    l1=InitList();
    l2=InitList();
    l3=InitList();
    read(l1);
    read(l2);
    combine(l1,l2,l3);
    print(l3);
    return 0;
}
List InitList()
{
    List l;
    l=(List)malloc(sizeof(struct Node));
    if(!l) return NULL;
    l->Next=NULL;
    return l;
}
void print(List l)
{
    l=l->Next;
    if(l==NULL)
    {
        printf("NULL");
        return;
    }
    while(l)
    {
        if(l->Next==NULL)
            printf("%d",l->data);
        else printf("%d ",l->data);
        l=l->Next;
    }
}
void read(List l)
{
    List tmp;
    int data;
    scanf("%d",&data);
    while(data>0)
    {
        tmp=(List)malloc(sizeof(struct Node));
        if(!tmp)return;
        tmp->data=data;
        tmp->Next=NULL;
        l->Next=tmp;
        l=tmp;
        scanf("%d",&data);
    }
    return;
}
void combine(List l1,List l2,List l3)
{
    l1=l1->Next;
    l2=l2->Next;
    while(l1!=NULL&&l2!=NULL)
    {
        if(l1->data>l2->data)
        {
            l3->Next=l2;
            l2=l2->Next;
        }
        else
        {
            l3->Next=l1;
            l1=l1->Next;
        }
        l3=l3->Next;
    }
    if(l1==NULL&&l2==NULL) return;
    if(l1!=NULL)
        l3->Next=l1;
    else l3->Next=l2;
    return;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

7-1 两个有序链表序列的合并(编程题) 的相关文章

  • 阿里平头哥CPU技术生态负责人陈炜:平头哥的发展之路

    整理 巫柔颖 RISC V是近年兴起的一种CPU新架构 因其开放 灵活的特性而逐渐成为半导体行业的热门选择 当前 已有近2500家机构加入RISC V基金会 包括阿里 华为 Google 英特尔 IBM等公司 在阿里宣布平头哥开源玄铁RIS
  • windows sql server 如何卸载干净?

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 windows sql server 怎么卸载干净 前言 一 windows sql server是什么 二 如何卸载干净 1 关闭sql server服务 2 到控制面板

随机推荐

  • hive 表创建及字段信息管理

    1 分区表创建及数据导入 1 1 创建分区表 以日期pt分区 字段用 t分隔 输入格式为txt 存储格式为orc use db name drop table if exists tablename CREATE TABLE IF NOT
  • Windows10 adb安装与环境变量配置

    adb安装与环境变量配置 目录 adb安装与环境变量配置 安装adb工具都需要什么 Android SDK 的下载 如何配置变量环境 adb启动不了是什么原因 安装adb工具都需要什么 1 需要下载Android SDK 配置环境变量即可
  • 797. 所有可能的路径

    class Solution public vector
  • 用STM32F407ZET6的HAL库写一个串口接收,发送代码,支持ringbuff

    你可以参考这个示例代码 https www st com content ccc resource technical document application note group0 b5 d4 04 c1 b4 4f 4d e5 DM0
  • 准确率与召回率

    1 准确率与召回率 Precision Recall 准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值 用来评价结果的质量 其中精度是检索出相关文档数与检索出的文档总数的比率 衡量的是检索系统的查准率 召回率是指检索出的相关文档
  • 求字符串长度的三种方法(C语言)

    如何求字符串的长度 首先要明白字符串存储的原理 字符串存储时 是以 0 结尾 这个就可以作为判断字符串结尾的一个条件 接下来 只要有字符串的首元素地址 就可以解决求字符串长度的问题啦 第一种 普通版 int my strlen char s
  • Revit 2019: Essential Training for MEP (Metric) Revit 2019:MEP基本培训 Lynda课程中文字幕

    Revit 2019 Essential Training for MEP Metric Revit 2019 MEP基本培训 Lynda课程中文字幕 Revit 2019 Essential Training for MEP Metric
  • 转载:Swap与Memory内存简单介绍

    背景介绍 对于Linux来说 其在服务器市场的使用已经占据了绝对的霸主地位 不可动摇 Linux的各种设计思想和使用也被传承 当然不乏各种黑Linux 而且黑的漂亮 Linux的很多独特的设计 对性能也产生了巨大的提升 也为其他应用软件和系
  • 如何加载MySql数据库驱动?

    一 直接把下载好的驱动jar包放在了C 下 二 修改CLASSPATH 右键 我的电脑 gt 环境变量里 遇到的问题 1老是遇到如下图红线框中的问题 修改了有5678次才修改
  • C语言整理

    C语言整理 谭大爷的书 精简版 l 程序设计和C语言 1 main表示主函数 int表示类型 stdio是一个文件名 h是头文件 include指令把信息调用 2 函数的组成 函数首部和函数体 声明部分与执行部分 3 编辑 编译 链接 执行
  • 医院管理系统服务器,解决方案-医院业务运维管理系统- 新华三集团-H3C

    BSM概述 H3C BSM 业务服务管理 解决方案 是新一代以业务为视角 以CMDB为核心 对业务和相关IT基础设施进行监控 管理和分析的解决方案 从业务入手 全面管理应用 网络 计算 存储 虚拟化等IT资源 建立统一的IT资源信息库 实现
  • 数据结构之数组

    目录 前言 线性表与连续内存 数组是如何支持随机访问 数组的插入与删除 数组越界 总结 参考文章 前言 数组是我们平时开发中经常遇到的一种数据结构 提起数组 我们能想到最大的特点就是 要提前定义好 需要提前申请好内存空间 数组是一种线性表数
  • 使用SVM对随机生成数据集进行分类 (线性可分 硬间隔)

    具体数学原理参考 统计学习方法 在学习过程中有疑惑如下 一直想不明白为什么式7 11中的分子没有用并且可以被当作常数 下面的解释是当w与b同比例变换时 函数间隔 即分子 亦会同比例变换 的确是这样 自己纸上写一下就好 但是为什么w和b一定要
  • 关于使用了中文用户名安装anaconda后jupyter报错问题解决 ---亲测有效

    win r 输入cmd后 弹出窗口里用户名是中文 有人会说 这个问题简单 直接改一下账户名即可 但这里只会使开机密码能改 dos窗口不会变 这样会导致一个问题 国外的某些软件 比如anaconda 要求启 动路径不能包含中文 必须是全英文
  • 第一天 复旦微FM33G048简单入门学习

    1 复旦微FM33G048基本参数 内容 参数 宽电压范围 1 8 5 5V 处理器内核 ARM Cortex M0 最高40MHz主频 SWD调试接口 支持用户 特权模式 支持中断向量表重定向 VTOR 低功耗技术平台 典型运行功耗180
  • 【零基础玩转BLDC系列】基于反电动势过零检测法的无刷直流电机控制原理

    无刷直流电动机基本转动原理请参考 基于HALL传感器的无刷直流电机控制原理 基本原理及基础知识本篇不再赘述 目录 反电势过零检测法的原理 反电势过零检测实现方法 位置传感器的存在限制了无刷直流电机在某些特定场合中的应用 如 使电机系统的体积
  • 试题库管理系统--数据库设计

    链接 https pan baidu com s 1ilMGCA n1GPDk3O8k7w7Gg 提取码 m0ke 复制这段内容后打开百度网盘手机App 操作更方便哦 一 概要设计 1 1 背景和意义 目前 许多高校绝大多数课程还采用考教统
  • Spring(二)控制反转

    控制反转是Spring框架的核心 用来消减计算机程序的耦合问题 依赖注入是IoC的另一种方法 只是从不同的角度上来描述的 通过 面向对象思想讨论控制反转和依赖注入两个概念 当某个java对象 调用者 需要调用另一个Java对象 被调用者 即
  • 声笔飞码6.00版使用指南

    声笔飞码6 00版使用指南 声笔飞码发明人兼设计人 戴石麟 电邮 sbxlm 126 com 一 声笔飞码6 00简介 声笔飞码在声笔码的基础上增加了偏旁部首对中文字词进行编码 用一个字母 通常取汉字读音的声母 有时也对偏旁部首进行形托 来
  • 7-1 两个有序链表序列的合并(编程题)

    已知两个非降序链表序列S1与S2 设计函数构造出S1与S2合并后的新的非降序链表S3 输入格式 输入分两行 分别在每行给出由若干个正整数构成的非降序序列 用 1表示序列的结尾 1不属于这个序列 数字用空格间隔 输出格式 在一行中输出合并后新