剑指offer-面试题25-合并两个排序的链表-链表
/*
题目:
输入两个递增排序的链表,合并这两个链表并使新的链表中的节点依然是递增排序。
返回新链表的头节点。
*/
/*
思路:
1、返回的链表的头节点为两个链表中头节点数值更小的为链表1。
2、进行比较
3、判断链表2的节点是否为空,若不为空则全部加到链表1的尾部。
*/
#include <iostream>
#include<cstdlib> using namespace std; struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
}; ListNode* Merge(ListNode* pHead1, ListNode* pHead2){
if(pHead1 == nullptr) return pHead2;
if(pHead2 == nullptr) return pHead1;
ListNode* pNode = nullptr;
ListNode* qNode = nullptr;
ListNode* temp = nullptr;
ListNode* head = nullptr;
if(pHead1->val < pHead2->val){
pNode = pHead1;
qNode = pHead2;
head = pHead1;
}else{
pNode = pHead2;
qNode = pHead1;
head = pHead2;
}
while(pNode->next != nullptr && qNode != nullptr){
if(pNode->next->val <= qNode->val){
pNode = pNode->next;
}else{
temp = pNode->next;
pNode->next = qNode;
qNode = qNode->next;
pNode->next->next = temp;
}
}
if(pNode->next == nullptr){
pNode->next = qNode;
}
return head;
} int main()
{
ListNode *node6 = new ListNode(6);
ListNode *node5 = new ListNode(5);
ListNode *node4 = new ListNode(4);
ListNode *pHead2 = new ListNode(1);
ListNode *node3 = new ListNode(5);
ListNode *node2 = new ListNode(2);
ListNode *node1 = new ListNode(2);
ListNode *pHead1 = new ListNode(0);
pHead1->next = node1;
node1->next = node2;
node2->next = node3;
node3->next = nullptr;
pHead2->next = node4;
node4->next = node5;
node5->next = node6;
node6->next = nullptr; ListNode* pHead = Merge(pHead1,pHead2);
cout<<"answer"<<endl;
while(pHead != nullptr){
cout<<pHead->val<<endl;
pHead = pHead->next;
} cout << "Hello world!" << endl;
return 0;
}
剑指offer-面试题25-合并两个排序的链表-链表的更多相关文章
- 剑指Offer:面试题17——合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路1: 分别用p1,p2两个指针扫描两个有序链表,p3指针去构建新链表h3. p1.val & ...
- 剑指Offer - 九度1519 - 合并两个排序的链表
剑指Offer - 九度1519 - 合并两个排序的链表2013-11-30 22:04 题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.(hi ...
- 剑指offer十六之合并两个排序的链表
一.题目 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 二.思路 注:链表1和链表2是两个递增排序的链表,合并这两个链表得到升序链表为链表3. 首先分析 ...
- 【剑指Offer】16、合并两个排序的链表
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解题思路: 首先需要判断几个特殊情况,即判断输入的两个指针是否为空.如果第一个 ...
- 剑指offer(16)合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目分析 重点抓住这两个链表都是单挑递增的,因此我们只需要不断地比较他们的头结点就行,明显这是个 ...
- 【剑指offer】面试题 25. 合并两个排序的链表
面试题 25. 合并两个排序的链表 NowCoder 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. Java 实现 ListNode Clas ...
- C++版 - 剑指offer之面试题37:两个链表的第一个公共结点[LeetCode 160] 解题报告
剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?t ...
- 剑指offer——面试题25:合并两个 排序的链表
自己答案: ListNode* MergeTwoSortedList(ListNode* pHead1,ListNode* pHead2) { if(pHead1==nullptr&& ...
- 《剑指offer》面试题25. 合并两个排序的链表
问题描述 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2-> ...
- 剑指Offer面试题:31.两个链表的第一个公共节点
一.题目:两个链表的第一个公共节点 题目:输入两个链表,找出它们的第一个公共结点. 链表结点定义如下,这里使用C#语言描述: public class Node { public int key; p ...
随机推荐
- Excel VBA: 自动生成巡检报表并通过邮件定时发送
目录 环境说明逻辑结构效果说明及截图①.安装SecureCRT②. 自动巡检脚本③. 数据检索并FTP传送④. 安装Excel 2013⑤. 安装Serv-U⑥. 自动生成图表并邮件发送 环境说明 系 ...
- PHP第三方登录——QQ登录
主要内容 简单回顾OAuth协议基本原理 接入QQ登录的前置条件以及开放平台账号申请 引入官方SDK SDK参数配置 SDK核心方法解读 整合QQ登录SDK到Web应用中 SDK优化 调用API的开发 ...
- 基于CentOS-7 部署open
一.OpenVPN概述 OpenVPN是一个用于创建专用网络加密通道的源软件.可在公司和家庭之间.部署类似于局域网的专用网络通道 而且OpenVPN使用起来也非常方便.几乎可以运行在任何平台.同时也采 ...
- Centos7.6安装zabbix留纪录
1)查看系统版本 [root@zabbix-s41 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@zabbix-s41 ~ ...
- Python LEGB (Local, Enclosing, Global, Build in) 规则
Local 一个函数定义了一个 local 作用域; PyFrameObject 中的 f_local 属性 Global 一个 module 定义了一个 global 作用域; PyFrameObj ...
- [Linux]curl 获取本服务器公网IP
curl ifconfig.me curl icanhazip.com curl curlmyip.com curl ip.appspot.com curl ipinfo.io/ip curl ipe ...
- 在Unity中使用 luajit 64位加密
参考:https://blog.csdn.net/sun19880421/article/details/68070696 https://blog.csdn.net/mydreamremindme/ ...
- Java之——23种设计模式汇总
在软件开发的历程中,正是无数前辈们本着追求完美的架构设计和代码设计的初心.经过无数前辈们的探索和努力,逐渐形成了一系列的设计原则和设计模式. 对于Java语言来说,通常包含有6大设计原则和23种设计模 ...
- 【转载】Linux设备树(Device Tree)机制
转:Linux设备树(Device Tree)机制 目录 1. 设备树(Device Tree)基本概念及作用2. 设备树的组成和使用 2.1. DTS和DTSI 2.2. DTC 2.3. DT ...
- A——大整数加法(HDU1002)
题目: I have a very simple problem for you. Given two integers A and B, your job is to calculate the S ...