剑指offer之合并两个排序的链表
来源:互联网 发布:淘宝代运营 诈骗 判刑 编辑:程序博客网 时间:2024/04/30 00:49
问题:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的?
需要合并的链表为1和2,合并后的效果如3。
分析:
首先分析合并两个链表的过程。我们的分析从合并两个链表的头结点开始。链表1的头结点的值小于链表2的头结点的值,因此链表1的头结点将是合并后链表的头结点。在两个链表中剩下的结点依然是排序的,因此合并这两个链表的步骤和前面的步骤是一样的。我们还是比较两个头结点的值。此时链表2的头结点的值小于链表1的头结点的值,因此链表2的头结点的值将是合并剩余结点得到的链表的头结点。我们把这个结点和前面合并链表时得到的链表的尾结点(值为1的结点)链接起来。
代码:
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)//递归
{
if
(pHead1 == NULL)
return
pHead2;
else
if
(pHead2 == NULL)
return
pHead1;
ListNode* pMergedHead = NULL;
if
(pHead1->m_nValue < pHead2->m_nValue)
{
pMergedHead = pHead1;
pMergedHead->m_pNext = Merge(pHead1->m_pNext, pHead2);
}
else
{
pMergedHead = pHead2;
pMergedHead->m_pNext = Merge(pHead1, pHead2->m_pNext);
}
return
pMergedHead;
}
非递归:
0 0
- 剑指Offer之合并两个排序的链表
- 剑指offer之合并两个排序的链表
- 剑指Offer之 - 合并两个排序的链表
- 剑指offer之合并两个排序的链表
- 剑指offer(十五)之合并两个排序的链表
- 剑指offer 之 合并两个排序的链表
- 剑指offer之十五---合并两个排序的链表
- 剑指offer 17-合并两个排序表的链表
- 剑指offer:合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 【剑指offer】Q17:合并两个排序的链表
- 剑指offer-17:合并两个排序的链表
- 剑指offer系列源码-合并两个排序的链表
- 剑指offer--合并两个排序的链表
- 剑指offer:合并两个排序的链表
- 剑指Offer-合并两个排序的链表
- 剑指offer:合并两个排序的链表 代码实现
- 《剑指Offer》面试题:合并两个排序的链表
- 一个图片--如何做好每一份工作。值得借鉴!
- Centos下载地址
- Contest2075 - 湖南多校对抗赛(2015.04.26)-C Catalan Square(csu1576)
- 面试题35:第一个只出现一次的字符
- Objective-C总Runtime的那点事儿(一)消息机制
- 剑指offer之合并两个排序的链表
- js 匿名函数 和 返回函数
- df 和 du 命令详解
- Android AsyncTask异步处理
- 计算机系统 笔记(2) 信息的表示和处理
- 全面了解hbase包括概念、原理等介绍
- RobotFramework自动化测试框架搭建(windows)
- 服务器模拟数据并封装成成XML发送到客服端
- Android学习之路(二)之 我的第一个Android应用程序