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++单链表反转、两有序链表合并仍有序的更多相关文章

  1. 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入

    什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...

  2. c# 有序链表合并 链表反转

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Java单链表反转图文详解

    Java单链表反转图文详解 最近在回顾链表反转问题中,突然有一些新的发现和收获,特此整理一下,与大家分享 背景回顾 单链表的存储结构如图: 数据域存放数据元素,指针域存放后继结点地址 我们以一条 N1 ...

  4. C语言实现单链表,并完成链表常用API函数

    C语言实现单链表,并完成链表常用API函数: 1.链表增.删.改.查. 2.打印链表.反转打印.打印环形链表. 3.链表排序.链表冒泡排序.链表快速排序. 4.求链表节点个数(普通方法.递归方法). ...

  5. 【剑指offer】两个链表的第一个公共结点,C++实现

    原创文章,转载请注明出处! 博客文章索引地址 # 题目 #举例 如果两个单向链表有公共的节点,那么这两个链表从第一个公共结点开始,之后所有结点都是重合的,不可能再出现分叉.拓扑结构如下图所示: # 思 ...

  6. 两个有序数组合并成一个有序数组(要求时间复杂度为O(n))

    面试题: 怎样把两个有序数组合并成有序数组呢 逻辑步骤: 1.假设两个数组为A和B 2.A和B都是从小到大的顺序进行排列 ** 1.我们可以直接比较两个数组的首元素,哪个小就把这个小元素放入可变数组. ...

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

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

  8. 剑指offer——python【第16题】合并两个有序链表

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

  9. 含头结点的单链表C++实现(包含创建,查找,插入,追加,删除,反转,排序,合并,打印,清空,销毁等基本操作)

    温馨提示:下面代码默认链表数据为字符型,本代码仅供参考,希望能对找到本随笔的人有所帮助! #include<iostream> using namespace std; typedef s ...

随机推荐

  1. 关闭Linux - centos7的防火墙

    关闭Centos7的防火墙 在每台虚拟机上分别执行以下指令: systemctl stop firewalld.service #停止firewall systemctl disable firewa ...

  2. oss-server 小型对象存储系统

    oss-server 项目介绍 oss-server是针对项目开发时提供的小型对象存储系统,开发者在针对文件上传时业务剥离,同时方便文件迁移,为满足单个项目,多个系统的情况下,提供统一的oss服务 o ...

  3. Pytest(18)pytest接口自动化完整框架思维导图

    pytest接口自动化完整框架思维导图

  4. Hbase Java API包括协处理器统计行数

    package com.zy; import java.io.IOException; import org.apache.commons.lang.time.StopWatch; import or ...

  5. 2019牛客暑期多校训练营(第七场)H.Pair(数位dp)

    题意:给你三个数A,B,C 现在要你找到满足  A and B >C 或者 A 异或 B < C 的对数. 思路:我们可以走对立面 把既满足 A and B <= C 也满足 A 异 ...

  6. hdu 4738 Caocao's Bridges(割边)

    题目链接 用tarjan求桥上的最小权值 #include<bits/stdc++.h> #define ll long long int using namespace std; inl ...

  7. 分块 && 例题 I Hate It HDU - 1754

    分块算法: 分块就是对暴力方法的一种优化:                          _ 假设我们总共的序列长度为n,然后我们把它切成√n 块,然后把每一块里的东西当成一个整体来看,完整块:被 ...

  8. 连接MongoDb数据库 -- Python

    1.安装完mongoDb数据库后,如果需要我们的Python程序和MongoDb数据库进行交互,需要安装pymongo模块: 安装方式:采用pip install pymongo的方式 Microso ...

  9. CF1415-C. Bouncing Ball

    CF1415-C. Bouncing Ball 题意: 在\(x\)轴上有\(n\)个点(从\(1\)到\(n\)),每个点都有一个值\(0\)或\(1\),\(0\)代表这个点不能走,\(1\)代表 ...

  10. 9.[完]其他常用的rabbitmq的参数和设置

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-08-12 20:42:25 星期一 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...