程序:

 1 #include <stdio.h>
2 #include <stdlib.h>
3
4 typedef int ElementType;
5 typedef struct Node *PtrToNode;
6 struct Node {
7 ElementType Data;
8 PtrToNode Next;
9 };
10 typedef PtrToNode List;
11
12 List Read(); /* 细节在此不表 */
13 void Print( List L ); /* 细节在此不表;空链表将输出NULL */
14
15 List Merge( List L1, List L2 );
16
17 int main()
18 {
19 List L1, L2, L;
20 L1 = Read();
21 L2 = Read();
22 L = Merge(L1, L2);
23 Print(L);
24 Print(L1);
25 Print(L2);
26 return 0;
27 }
28
29 List Merge(List L1,List L2) {
30 List L3=(List)malloc(sizeof(struct Node));
31 List L = L3;
32 List p1=L1->Next;
33 List p2=L2->Next;
34 while(p1&&p2) {
35 if(p1->Data<p2->Data) {
36 L->Next = p1;
37 p1=p1->Next;
38 } else {
39 L->Next = p2;
40 p2=p2->Next;
41 }
42 L=L->Next;
43 }
44 L->Next = NULL;
45 if(p1) L->Next=p1;
46 if(p2) L->Next=p2;
47 L1->Next=NULL;
48 L2->Next=NULL;
49 return L3;
50 }

分析:

1、带头结点的单链表,头结点没有数据

2、链表没有整体概念,只有结点

3、利用现有序列中的结点,定义一个新的头结点后,重新定义结点间的连接关系即可。malloc()只使用一次

4、头结点是遍历链表所必须的,定义后不可更改

5、只要p1、p2一个结束了,就把L整体接到没结束的那个链表上,同时原链表指向空

[刷题] PTA 02-线性结构1 两个有序链表序列的合并的更多相关文章

  1. 02-线性结构1 两个有序链表序列的合并(15 point(s)) 【链表合并】

    02-线性结构1 两个有序链表序列的合并(15 point(s)) 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L ...

  2. PAT 02-线性结构1 两个有序链表序列的合并 (15分)

    本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个递增的整数序列. 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef ...

  3. PTA 两个有序链表序列的合并

    6-5 两个有序链表序列的合并 (15 分)   本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L ...

  4. 浙江大学PAT上机题解析之2-11. 两个有序链表序列的合并

    已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的并集新非降序链表S3. 输入格式说明: 输入分2行,分别在每行给出由若干个正整数构成的非降序序列,用-1表示序列的结尾(-1不属于这个序列) ...

  5. [刷题] PTA 02-线性结构4 Pop Sequence

    模拟栈进出 方法一: 1 #include<stdio.h> 2 #define MAXSIZE 1000 3 4 typedef struct{ 5 int data[MAXSIZE]; ...

  6. [刷题] PTA 02-线性结构3 Reversing Linked List

    链表逆序 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 using namesp ...

  7. 【LeetCode题解】21_合并两个有序链表

    目录 21_合并两个有序链表 描述 解法一:迭代 思路 Java 实现 Python 实现 解法二:递归 思路 Java 实现 Python 实现 21_合并两个有序链表 描述 将两个有序链表合并为一 ...

  8. leecode刷题(23)-- 合并两个有序链表

    leecode刷题(23)-- 合并两个有序链表 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2-> ...

  9. #leetcode刷题之路21-合并两个有序链表

    将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例:输入:1->2->4, 1->3->4输出:1->1->2-&g ...

随机推荐

  1. Logtash遇到的异常和注意点

    1.Logtash遇到的异常和注意点 1.1 logstash使用kafka插件和es集成 如果logstash使用kafka插件和es集成,必须设置kafka插件参数 session_timeout ...

  2. java正则匹配${xxx} 排除单引号双引号内的内容,前提引号必须成对出现

    public static void main(String[] a) { String wpp = "select 1, ${mark} '``this is, `/message22` ...

  3. python3 mysql API

    1. 安装引入 2. 对象简介 3. 代码封装 1. 安装引入 1)安装: pip install PyMySQL 2)Pycharm 中引入 pymysql:

  4. 绕过阿里云waf进行mysql limit注入证明

    朋友发了我一个站点,来看看吧,是limit注入,不太常见.搞一搞吧. POST /Member/CompanyApply/lists HTTP/1.1 Host: * Content-Length: ...

  5. 利用宝塔面板搭建 Laravel 5.5 环境

    1.更新系统 yum install epel-release #rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest- ...

  6. Oracle 数据库裸设备扩容处理

    前段时间,我管理的一台Oracle数据库表空间容量不足了,由于本人以前没有接触过Oracle的使用所以,就自己查资料来研究如何扩容,网上的文档多数都是在物理机上扩容,而偏偏我的数据文件是存储在裸设备上 ...

  7. W32Dasm缓冲区溢出分析【转载】

    课程简介 在上次课程中与大家一起学习了编写通用的Shellcode,也提到会用一个实例来展示Shellcode的溢出. 那么本次课程中为大家准备了W32Dasm这款软件,并且是存在漏洞的版本.利用它的 ...

  8. Windows核心编程 第三章 内核对象

    第3章内核对象 在介绍Windows API的时候,首先要讲述内核对象以及它们的句柄.本章将要介绍一些比较抽象的概念,在此并不讨论某个特定内核对象的特性,相反只是介绍适用于所有内核对象的特性. 首先介 ...

  9. Node-Web应用框架Express

    Express 是 node.js Web应用框架, 帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速地搭建一个完整功能的网站. Express 框架核心特性: ...

  10. MFC ListControl用法合集

    以下未经说明,listctrl 默认view 风格为report ------------------------------------------------------------------- ...