两个有序链表序列的合并(省略函数实现)

2023-11-16

浙大版《数据结构(第2版)》题目集-习题2.5 两个有序链表序列的合并

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

typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
    ElementType Data;
    PtrToNode   Next;
};
typedef PtrToNode List;

void Read(List &L, ElementType a[], int n); /* 细节在此不表 */
void Print( List L ); /* 细节在此不表;空链表将输出NULL */

List Merge( List L1, List L2 );

int main()
{   
	ElementType a1[3] = {1, 3, 5};
	ElementType a2[5] = {2, 4, 6, 8, 10};
    List L1, L2, L;
    Read(L1, a1, 3);
    Read(L2, a2, 5);
    L = Merge(L1, L2); 
    Print(L);
    Print(L1);
    Print(L2);
    return 0;
}

/* 你的代码将被嵌在这里 */
List Merge( List L1, List L2 ) // 合并函数
{
	List L, pre1, pre2, pre;
	L = (List)malloc(sizeof(List));
	L -> Next = NULL;
	pre1 = L1 -> Next;
	pre2 = L2 -> Next;
	pre = L;
	while(pre1 != NULL && pre2 != NULL)
	{
		if(L1 -> Next -> Data <= L2 -> Next -> Data)
		{
			L1 -> Next = pre1 -> Next;
			pre1 -> Next = pre -> Next;
			pre -> Next = pre1;
			pre = pre1;
			pre1 = L1 -> Next;
		}
		else
		{
			L2 -> Next = pre2 -> Next;
			pre2 -> Next = pre -> Next;
			pre -> Next = pre2; 
			pre = pre2;
			pre2 = L2 -> Next;
		}		
	}
	while(pre1 != NULL)
	{
		L1 -> Next = pre1 -> Next;
		pre1 -> Next = pre -> Next;
		pre -> Next = pre1;
		pre = pre1;
		pre1 = L1 -> Next;
	}
	while(pre2 != NULL)
	{
		L2 -> Next = pre2 -> Next;
		pre2 -> Next = pre -> Next;
		pre -> Next = pre2; 
		pre = pre2;
		pre2 = L2 -> Next;
	}
	return L;
}

void Read(List &L, ElementType a[], int n) //尾插法函数
{
	List s, r;
	L = (List)malloc(sizeof(List));
	r = L;
	for(int i = 0; i < n; i++)
	{
		s = (List)malloc(sizeof(List));
		s -> Data = a[i];
		r -> Next = s;
		r = s;
	}
	r -> Next = NULL;
}

void Print( List L )    //输出函数
{
	List p = L -> Next;
	while(p != NULL)
	{
		printf("%d ", p -> Data);
		p = p -> Next;
	}
	printf("\n");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个有序链表序列的合并(省略函数实现) 的相关文章

  • 如何在Linux下配置nginx以及docker环境

    nginx环境的配置 环境准备 编译 php fpm环境的搭建 docker环境的配置 什么是docker 在linux中安装docker nginx环境的配置 环境准备 我这里使用的是 centos7 以下操作都是在这个环境下进行执行的
  • JavaScript 逆向调试常用技巧

    1 断点调试 接下来介绍一个非常重要的功能 断点调试 在调试代码的时候 我们可以在需要的位置上打断点 当对应事件触发时 浏览器就会自动停在断点的位置等待调试 此时我们可以选择单步调试 在面板中观察调用栈 变量值 以更好地追踪对应位置的执行逻
  • 100个python算法超详细讲解:分糖果

    1 问题描述 10个小孩围成一圈分糖果 老师分给第1个小孩10块 第2个小孩2块 第3个小 孩8块 第4个小孩22块 第5个小孩16块 第6个小孩4块 第7个小孩10块 第8个小 孩6块 第9个小孩14块 第10个小孩20块 然后所有的小孩

随机推荐

  • 【AI视野·今日CV 计算机视觉论文速览 第215期】Tue, 8 Jun 2021

    AI视野 今日CS CV 计算机视觉论文速览 Tue 8 Jun 2021 showing first 100 of 133 entries Totally 100 papers 上期速览 更多精彩请移步主页 Daily Computer
  • 一文了解语音合成技术(TTS)

    TTS是Text To Speech的缩写 即 从文本到语音 它将计算机自己产生的 或外部输入的文字信息转变为可以听得懂的 流利的汉语口语 或者其他语言语音 输出的技术 隶属于语音合成 SpeechSynthesis 语音 在人类的发展过程
  • 关于深度残差网络(Deep residual network, ResNet)

    深度残差网络 深度残差网络的设计就是为了克服这种由于网络深度加深而产生的学习效率变低 准确率无法有效提升的问题 也称为网络退化 甚至在一些场景下 网络层数的增加反而会降低正确率 这种本质问题是由于出现了信息丢失而产生的过拟合问题 overf
  • conda --init 问题

    初始化编译软件出现下面问题 vscode Windows Visual Studio 2017 Developer Command Prompt v15 9 45 Copyright c 2017 Microsoft Corporation
  • vue2项目window.open打开一个新窗口刷新总回到首页(重定向页面)

    问题描述 使用window open打开新窗口跳转本系统的某一个页面 如 http 192 168 1 206 9529 previewScreen idx 1653966398075965442 刷新总是回到首页 找了很久也没找到解决办法
  • QLExpression学习使用教程

    文章目录 QLExpress 简介 支持特性 Maven引入 例子github源码 图分解 提示 例子 初次使用 Runner执行器设置 执行器执行命令的设置 支持普通的Java语法执行 运算符支持 运算符分类 示例 部分运算符列举 样例使
  • 远控与文件传输

    由于目前工作用到了win10 win7 ubuntu kali等系统 而且考虑到之后出差或者远程办公等 所以打算用我最新的ipad pro连接计算机 这样尽量减少每次背着电脑和ipad等一堆设备 远控与文件传输 1 局域网下电脑文件互传 2
  • 详解Java四大作用域

    文章目录 四大作用域 1 pageContext 1 1定义 2 request 详解 2 1定义 2 2 request域对象的使用 2 3生命周期 2 4 获取请求头数据 3 session 详解 3 1定义 3 2 获取session
  • VSCode Java 开发配置

    本文将介绍如何使用VSCode配置Java开发环境 读者可以通过链接 打开进入到下载页面 读者需要选择自己的操作系统进行下载 下载完成后在操作系统中将其安装 安装完成后打开VSCode软件 首次进入VSCode界面如图所示 VSCode作为
  • [激光原理与应用-62]:激光器 - 光学 - 怎样测量光斑和光束质量?

    目录 一 概述 二 光强分布 三 光束直径 四 光束相机 五 M 因子测量 六 束腰以及大小 七 发散角 八 正态分布 高斯分布 其他概念 一 概述 激光的直径和光强度分布可通过光束轮廓分析仪测量 但为了判定光束质量 还需要加上M 测量扩展
  • 【mac】Obsidian手动安装插件-多端同步

    手动插件安装 porxy github 这个插件是专门解决 无法加载插件市场的 先在github中打开链接 github上教了方法 下载zip文件 解压后 插入到 obsidian plugins文件夹内 一般来讲 小白刚安装的时候难免找不
  • CentOS7 Hive2.3.9 安装部署(mysql 8.0)

    一 CentOS7安装MySQL数据库 查询载mariadb rpm qa grep mariadb 卸载mariadb rpm e nodeps 查询出来的内容 安装wget为下载mysql准备 yum y install wget 在t
  • mysql alter的用法--修改表,字段等信息

    一 修改表信息 1 修改表名 修改表名为studen1 alter table student rename to student1 2 修改表注释 修改表注释 alter table student comment 学生表 二 修改字段信
  • Python-字典合并

    方法1 使用update方法 第二个参数合并第一个参数 def merge dict1 dict2 return dict2 update dict1 两个字典 dict1 a 10 b 8 dict2 d 6 c 4 返回None pri
  • Python入门必背代码大全

    前言 Python作为一门简洁而强大的编程语言 广泛应用于数据分析 Web开发 人工智能等领域 本文将为您整理一份Python入门必背的代码大全 帮助您掌握常用的Python代码片段 快速入门并提升编程技能 一 基本语法和数据类型操作 打印
  • C++的类与对象

    类的概念 类是将不同类型的数据和处理这些数据的操作封装在一起的一个复合数据类型 类有两类成员 一类是数据成员 用于表示实体抽象的属性 另一类是成员函数 用来描述实体抽象的行为 类作为一种数据类型 在定义的时候是不分配内存的 类通过将数据和对
  • JVM OOM问题排查与解决思路

    OOM原因 1 堆溢出 报错信息 java lang OutOfMemoryError Java heap space 代码中可能存在大对象分配 无法获得足够的内存分配 可能发生内存泄露 导致内存被无效占用以至于耗尽 2 永久代 元空间溢出
  • Blender图解教程:新手入门练习1

    多边形建模命令仅在编辑模式下可用 一 台灯 成果展示 步骤 1 打开Blender 新建 常规 文件 2 制作台灯底座 选择该立方体的上面 快捷键 3 然后使用快捷键 G 再按快捷键 Z 使其沿Z轴移动 移动鼠标 调整台灯底座到合适的高度
  • 电脑提示d3dcompiler_47.dll丢失怎么解决?d3dcompiler_47.dll缺失修复方法

    d3dcompiler 47 dll文件是Windows系统重要的组件 电脑一出现缺失或者损坏的情况下 电脑很多游戏跟软件都无法打开运行 小编今天就把修复教程分享给大家 首先是打开电脑浏览器后在顶部输入 dll修复文件 site 按下键盘的
  • 两个有序链表序列的合并(省略函数实现)

    浙大版 数据结构 第2版 题目集 习题2 5 两个有序链表序列的合并 include