剑指offer16合并两个排序的链表

转载 2018年04月17日 20:48:25

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

class Solution {

public:
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    {
        if(!pHead1)
            return pHead2;
        if(!pHead2)
            return pHead1;
        ListNode* Head;
        ListNode* p;
        //取较小值作头结点
        if(pHead1->val<=pHead2->val){
            Head=pHead1;
            pHead1=pHead1->next;
        }
        else{
            Head=pHead2;
            pHead2=pHead2->next;
        }  
        //开始遍历合并
        p=Head;                                                   //p为合并后的链表的工作指针
        while(pHead1&&pHead2){                       //当有一个链表到结尾时,循环结束
            if(pHead1->val<=pHead2->val){          //如果链表1的结点小于链表2的结点
                p->next=pHead1;                            //取这个结点加入合并链表
                pHead1=pHead1->next;                 //链表1后移一位
                p=p->next;                                      //工作指针后移一位
            }               
            else{                                               //否则取链表2的结点
                p->next=pHead2;
                pHead2=pHead2->next;
                p=p->next;
            }                
        }
        if(pHead1 == NULL)           //链表1遍历完了
            p->next = pHead2;         //如果链表2也遍历完了,则pHead2=NULL
        if(pHead2 == NULL)            //链表2遍历完了
            p->next = pHead1;         ///如果链表1也遍历完了,则pHead1=NULL
        return Head;
    }
};

剑指Offer面试题17(Java版):合并两个排序的链表

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图中的链表1和链表2,则合并之后的升序链表3所示。 这是一个经常被各公司采用的面试题。在面试过程中...
  • jsqfengbao
  • jsqfengbao
  • 2015-08-01 21:28:00
  • 2053

剑指offer之面试题17合并两个排序的链表

问题描述:输入两个递增的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。...
  • WSYW126
  • WSYW126
  • 2016-05-11 10:18:53
  • 726

剑指offer系列之15:合并两个有序的链表

题目描述:输入两个递增排序的链表,合并两个链表使合并后的链表满足单调不减。思路1:递归的方法,因为两个链表都是排序的,所以可以先比较两个链表的头结点,这样就确定了合并之后链表的第一个节点,之后再比较两...
  • ly_main
  • ly_main
  • 2016-04-11 19:53:38
  • 300

剑指offer之合并两个排序的链表(Python)

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。...
  • u010636181
  • u010636181
  • 2017-10-17 14:33:34
  • 401

lintcode-合并两个排序链表 -165

/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; ...
  • ljlstart
  • ljlstart
  • 2015-09-21 20:20:26
  • 741

LintCode-合并两个排序链表

题目描述:将两个排序链表合并为一个新的排序链表 样例 给出 1->3->8->11->15->null,2->null,返回 1->2->3->8->11->15->null。 做题思路:用两个头结点...
  • yaomf
  • yaomf
  • 2017-03-29 12:16:07
  • 532

合并两个已经排序好的链表

一,问题描述 1,输入两个单调递增的链表,输出两个链表合成后的链表。新链表也是单调递增的。二,程序如下(Java实现):1,非递归合并有序链表import java.util.*; class Li...
  • wodedipang_
  • wodedipang_
  • 2017-02-19 14:33:44
  • 1439

lintcode——合并两个排序链表

1.题目      将两个排序链表合并为一个新的排序链表      给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。 2.思...
  • LFJ17
  • LFJ17
  • 2017-03-29 23:21:37
  • 427

LeetCodet题解--21. Merge Two Sorted Lists(合并两个排序好的链表)

链接 LeetCode题目:https://leetcode.com/problems/merge-two-sorted-lists GitHub代码:https://github.co...
  • gatieme
  • gatieme
  • 2016-04-08 11:06:43
  • 1591

面试之路(29)-合并两个排序的链表(递归和非递归)

链表的类:class ListNode{ int key; ListNode next; }思路: 这个和数组不一样,不需要采用双指针,从后往前来 代码:递归p...
  • u010321471
  • u010321471
  • 2016-05-09 22:09:34
  • 1256
收藏助手
不良信息举报
您举报文章:剑指offer16合并两个排序的链表
举报原因:
原因补充:

(最多只允许输入30个字)