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是空指针

    # 功能测试

    • 两个链表有多个节点,节点的值互不相同
    • 两个链表有多个节点,存在值相等的多个节点
  • 相关阅读:
    Metropolis(大都会):以太坊网络的下一个阶段
    《区块链开发技术综述》乱弹
    Ext.Net学习笔记09:Ext.Net Store的用法
    Ext.Net学习笔记09:Ext.Net Store的用法
    Spring整合redis配置文件详解
    Spring整合redis配置文件详解
    Spring整合redis配置文件详解
    Spring整合redis配置文件详解
    Android环境配置----在Ubuntu上安装JDK
    Android环境配置----在Ubuntu上安装JDK
  • 原文地址:https://www.cnblogs.com/wanglei5205/p/8592934.html
Copyright © 2011-2022 走看看