C++单链表反转、两有序链表合并仍有序
1 #include<iostream>
2
3 struct Node
4 {
5 int data;
6 Node *next;
7 };
8
9 typedef struct Node Node;
10
11 Node *Reverse(Node *head)
12 {
13 if (NULL == head || NULL == head->next)
14 return head;
15 Node *p1 = head;
16 Node *p2 = p1->next;
17 Node *p3 = p2->next;
18 p1->next = NULL;
19 while (p3 != NULL)
20 {
21 p2->next = p1;
22 p1 = p2;
23 p2 = p3;
24 p3 = p3->next;
25 }
26
27 p2->next = p1;
28 head = p2;
29 return head;
30 }
31
32 // 循环算法
33 Node *Merge(Node *head1, Node *head2)
34 {
35 if (NULL == head1)
36 return head2;
37 if (NULL == head2)
38 return head1;
39 Node *head = NULL;
40 Node *p1 = NULL;
41 Node *p2 = NULL;
42 if (head1->data < head2->data)
43 {
44 head = head1;
45 p1 = head1->next;
46 p2 = head2;
47 }
48 else
49 {
50 head = head2;
51 p2 = head2->next;
52 p2 = head1;
53 }
54
55 Node *cur = head;
56 while (NULL!=p1 && NULL!=p2)
57 {
58 if (p1->data < p2->data)
59 {
60 cur->next = p1;
61 cur = p1;
62 p1 = p1->next;
63 }
64 else
65 {
66 cur->next = p2;
67 cur = p2;
68 p2 = p2->next;
69 }
70 }
71 if (NULL == p1)
72 cur->next = p2;
73 if (NULL == p2)
74 cur->next = p1;
75
76 return head;
77 }
78
79 // 递归算法
80 Node *MergeRecursive(Node *head1, Node *head2)
81 {
82 if (NULL == head1)
83 return head2;
84 if (NULL == head2)
85 return head1;
86 Node *head = NULL;
87
88 if (head1->data < head2->data)
89 {
90 head = head1;
91 head->next = MergeRecursive(head1->next, head2);
92 }
93 else
94 {
95 head = head2;
96 head->next = MergeRecursive(head1, head2->next);
97 }
98
99 return head;
100 }
101
102 int main(void)
103 {
104 return 0;
105 }
C++单链表反转、两有序链表合并仍有序的更多相关文章
- 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入
什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...
- c# 有序链表合并 链表反转
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Java单链表反转图文详解
Java单链表反转图文详解 最近在回顾链表反转问题中,突然有一些新的发现和收获,特此整理一下,与大家分享 背景回顾 单链表的存储结构如图: 数据域存放数据元素,指针域存放后继结点地址 我们以一条 N1 ...
- C语言实现单链表,并完成链表常用API函数
C语言实现单链表,并完成链表常用API函数: 1.链表增.删.改.查. 2.打印链表.反转打印.打印环形链表. 3.链表排序.链表冒泡排序.链表快速排序. 4.求链表节点个数(普通方法.递归方法). ...
- 【剑指offer】两个链表的第一个公共结点,C++实现
原创文章,转载请注明出处! 博客文章索引地址 # 题目 #举例 如果两个单向链表有公共的节点,那么这两个链表从第一个公共结点开始,之后所有结点都是重合的,不可能再出现分叉.拓扑结构如下图所示: # 思 ...
- 两个有序数组合并成一个有序数组(要求时间复杂度为O(n))
面试题: 怎样把两个有序数组合并成有序数组呢 逻辑步骤: 1.假设两个数组为A和B 2.A和B都是从小到大的顺序进行排列 ** 1.我们可以直接比较两个数组的首元素,哪个小就把这个小元素放入可变数组. ...
- PAT 02-线性结构1 两个有序链表序列的合并 (15分)
本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个递增的整数序列. 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef ...
- 剑指offer——python【第16题】合并两个有序链表
题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-& ...
- 含头结点的单链表C++实现(包含创建,查找,插入,追加,删除,反转,排序,合并,打印,清空,销毁等基本操作)
温馨提示:下面代码默认链表数据为字符型,本代码仅供参考,希望能对找到本随笔的人有所帮助! #include<iostream> using namespace std; typedef s ...
随机推荐
- Java——变量类型
Java变量类型: 在Java中,所有的变量在使用前必须声明.格式: type identifier [ = value ][, identifier [ =value]-.]; type为Java数 ...
- MySQL复合索引探究
复合索引(又称为联合索引),是在多个列上创建的索引.创建复合索引最重要的是列顺序的选择,这关系到索引能否使用上,或者影响多少个谓词条件能使用上索引.复合索引的使用遵循最左匹配原则,只有索引左边的列匹配 ...
- 克鲁斯卡尔算法(Kruskal算法)求最小生成树
题目传送:https://loj.ac/p/10065 1.排序函数sort,任何一种排序算法都行,下面的示例代码中,我采用的是冒泡排序算法 2.寻源函数getRoot,寻找某一个点在并查集中的根,注 ...
- 2019牛客暑期多校训练营(第九场)D-Knapsack Cryptosystem(思维+子集和)
>传送门<题意:给你一个有n个元素的数组,一个sum,让你找到数组的子集使得子集元素和等于sum,保证只有一个解决方案. (其中1≤n≤36,0≤ sum<9*1018,0<a ...
- Codeforces Global Round 9 A. Sign Flipping (构造)
题意:有一个长度为\(n\)(odd)的序列,可以更改所有的数的正负,要求最少\(\frac{n-1}{2}\)个\(a_{i+1}-a_i\ge0\),并且要求最少\(\frac{n-1}{2}\) ...
- python代理池的构建2——代理ip是否可用的处理和检查
上一篇博客地址:python代理池的构建1--代理IP类的构建,以及配置文件.日志文件.requests请求头 一.代理ip是否可用的处理(httpbin_validator.py) #-*-codi ...
- c文件二进制读取写入文件、c语言实现二进制(01)转化成txt格式文本、c读取文件名可变
c语言实现二进制(01)转化成txt格式文本: 下面的程序只能实现ascall对应字符转换,如果文件内出现中文字符,则会出现错误. 本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件 ...
- C# 程序运行时间计算
https://www.cnblogs.com/dearzhoubi/p/9842452.html
- bnuoj-53073 萌萌哒身高差 【数学】【非原创】
"清明时节雨纷纷,路上行人欲断魂." 然而wfy同学的心情是愉快的,因为BNU ACM队出去春游啦!并且,嗯... 以下是wfy同学的日记: 昨天,何老师告诉我们:明天我们去春游, ...
- C# 类 (12) - Partial
Partial 前面说了,同一个namespace 里 class 名字是不能重的,除非是在不同的namespace里,下面开始打脸在同一个namespace里,加上partial 关键字,可以写同样 ...