程序:

 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. DAOS 分布式异步对象存储|故障模型

    DAOS 依靠大规模分布式单端口存储.因此,每个 Target 实际上都是一个单独的失败点. DAOS 通过在不同的容错域中提供 Target 间的冗余来实现数据和元数据的可用性和持久性.DAOS 内 ...

  2. Azure App Service(一)利用Azure DevOps Pipeline 构建镜像,部署应用程序

    一,引言 起因是前两天项目上做测试,需要我把写好的基于.NET 5 的 Web 测试程序作成 Docker 镜像.当我在本地验证完功能后,准备利用 Docker 构建应用程序镜像的时候,发现系统不支持 ...

  3. istio:在vs中实现ab测试和路径切割

    此篇内容 主要目的是总结vs中的match的有关规则和在istio中如何实现路径切割(当下版本1.8.2) 实验demo main.go package main import ( "git ...

  4. 使用ffmpeg 操作音频文件前后部分静音移除.

    指令特别简单, 但是却琢磨了一下午. 总结看文档时要细心, 主要ffmpeg的版本要 8.2.1 以上 ffmpeg -i in.mp3 -af silenceremove=start_periods ...

  5. Sql Server Report Service访问服务页面503解决方法

    这个问题可能性比较多,也有多个方案去解决,可以从如下方法里逐个测试 1.打最新的数据库补丁. 2.删除报表服务配置的密钥,重启报表服务. 3.修改报表服务器配置的用户账户为域管理员 4.找到报表服务器 ...

  6. Go-30-main包

    main包 package main import ( "fmt" "kubeflow-tool/main/cmd" "os" ) func ...

  7. 6. Mybatis Parameters

    这个元素说的直白点就是定义参数.注意一个语句中只能有一个参数. 所以参数类型在以后的使用中,可能需要复杂的类型,比如hashmap,一个复杂的对象等.例如: <?xml version=&quo ...

  8. 带你温习一下webpack配置

    前言 你知道node.webpack和npm之间的关系吗? 首先来介绍一下node.webpack和npm的有什么样的关系. 我们知道webpack是对我们所开发的html.css.js等模块化开发的 ...

  9. 908. Smallest Range I

    Given an array A of integers, for each integer A[i] we may choose any x with -K <= x <= K, and ...

  10. 深度解析Django REST Framework 批量操作

    我们都知道Django rest framework这个库,默认只支持批量查看,不支持批量更新(局部或整体)和批量删除. 下面我们来讨论这个问题,看看如何实现批量更新和删除操作. DRF基本情况 我们 ...