zoukankan      html  css  js  c++  java
  • 【剑指offer-25】合并两个单调递增的链表,C++实现(链表)

    原创博客,转载请注明出处!

    1.题目

          输入两个单调递增的链表,输出两个链表合成后的链表(单调不减)。

                                                                                             image

    2.思路(递归)

    # 鲁棒性:

          如果链表1是空链表,则直接输出链表2。

          如果链表2是空链表,则直接输出链表1。

    # 递归思路:

          定义三个指针,指向链表1头结点的指针p1,指向链表2头结点的指针p2,指向合并后链表头节点的指针head。比较p1和p2的值,如果p1<p2,那么head指向p1,p1指向p1的下一个节点;如果p1>p2,那么head指向p2,p2指向p2的下一个节点。依次类推……

                                                                                         image

    3.代码

    本题《牛客网》地址 

      1 /*
      2 struct ListNode {
      3 	int val;
      4 	struct ListNode *next;
      5 	ListNode(int x) :
      6 			val(x), next(NULL) {
      7 	}
      8 };*/
      9 class Solution {
     10 public:
     11     ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
     12     {
     13         // 鲁棒性(边界检查)
     14         if(pHead1==nullptr)
     15             return pHead2;
     16 
     17         if(pHead2==nullptr)
     18             return pHead1;
     19 
     20         // 递归合并
     21         ListNode* head = nullptr;
     22         if(pHead1->val < pHead2->val)
     23         {
     24             head = pHead1;
     25             head->next = Merge(pHead1->next,pHead2);
     26         }
     27         else
     28         {
     29             head = pHead2;
     30             head->next = Merge(pHead1,pHead2->next);
     31         }
     32 
     33         return head;
     34 
     35     }
     36 };

    4.测试用例

    # 边界测试

    • 链表1是空指针
    • 链表2是空指针
    • 链表1和链表2是空指针

    # 功能测试

    • 两个链表有多个节点,节点的值互不相同
    • 两个链表有多个节点,存在值相等的多个节点
  • 相关阅读:
    python的字符串连接操作符+
    python-在定义函数时,不定长参数中,默认值参数不能放在必选参数前面
    python中的sort方法使用详解
    详解Python中的join()函数的用法
    python中map()函数
    python的匿名函数lambda解释及用法
    python 代码的缩进位置决定执行部分
    python代码位置引发的错误
    python中如何使输出不换行
    git stash
  • 原文地址:https://www.cnblogs.com/wanglei5205/p/8592934.html
Copyright © 2011-2022 走看看