剑指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 ...
随机推荐
- 【C++】随机数引擎
rand() 基本:使用随机数时,经常见到的是C标准库提供的函数rand(),这个函数会生成一个0到RAND_MAX之间的一个整形数: 分布:为了得到一个给定范围内的随机数,通常会对生成的随机数取余: ...
- 用Java反射输出对象的所有属性的值
获取对象的类类型 Class cls = obj.getClass(); 用类类型获取属性数组 getFields()获取的是共有属性 getDeclaredFields()可以获取所有属性 Fiel ...
- Visual C# 2015调用SnmpSharpNet库实现简单的SNMP元素查询
一开始调研发现有几个SNMP的库, 一个是net-SNMP,这个好像是linux用的多 一个是微软自己的WinSNMP,这个没有例子,不太好操作 一个是SnmpSharpNet,这个有些例子比较好, ...
- jenkins SSH发布文件 Publish over SSH
jenkins 构建完成后需要一键发布,结构如下 A服务器 svn B服务器 jenkins C服务器 应用服务器 B从A拉取代码后打包成war,然后向C服务器拷贝war包 这里解决的就是远程拷贝问题 ...
- [转载]理解weight decay
http://blog.sina.com.cn/s/blog_a89e19440102x1el.html
- TCP三次握手四次挥手过程梳理
1. 数据传输的大致示意图 1.1 TCP数据报文首部内部 1.2 TCP连接的几种状态说明 即命令 netstat 结果中的所有状态: 2. TCP连接建立的全过程 2.1 TCP三次握手建立TCP ...
- zabbix性能问题
在我们的zabbixserver端主机数量过多时,如果由server端去收集数据,zabbix会出现严重的性能问题,主要的表现有: 1.当被监控端达到一个量级的时候,web操作会卡,容易出现502 2 ...
- mysql5.5编译安装
MySQL是一个关系型数据库管理系统 ,由瑞典MySQL AB公司开发,目前属于Oracle 公司.MySQL分为社区版和商业版,由于其体积小.速度快.总体拥有成本低,尤其是开放源码 这一特点,一般中 ...
- 1. c++实现最最最原始人的数字时钟
网课c++第一次作业,学到了iomanip库文件里的setw(),setfill()等函数,自己完成作业时搜着学到了Windows.h库文件里的sleep(),system("cls&quo ...
- codewars--js--Convert all the cases!
问题描述: In this kata, you will make a function that converts between camelCase, snake_case, and kebab- ...