zoukankan      html  css  js  c++  java
  • 剑指offer-合并两个排序的链表

    题目描述

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

    解题思路

    利用递归的思想,分别从两个链表的头节点开始,比较各自的值,并让新链表的头指针指向值较小的那个头结点。然后把值小的那个链表的头结点抽出,合并两个新链表并让头节点的next指针指向它。若碰到两个链表中的一个为NULL,则返回另一个链表为合并链表。

    代码

     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         if(pHead1 == NULL)
    14             return pHead2;
    15         if(pHead2 == NULL)
    16             return pHead1;
    17         ListNode* pHead = NULL;
    18         if(pHead1->val >= pHead2->val){
    19             pHead = pHead2;
    20             pHead->next = Merge(pHead1, pHead2->next);
    21         }
    22         else{
    23             pHead = pHead1;
    24             pHead->next = Merge(pHead1->next, pHead2);
    25         }
    26         return pHead;
    27     }
    28 };
  • 相关阅读:
    POJ
    FZU
    HDU
    HDU
    HDU
    HDU
    Educational Codeforces Round 84 E. Count The Blocks
    B Boundary(由弦求圆)
    D. Maximum Sum on Even Positions(翻转1次,求最大偶数位和)
    E. DeadLee(思维,拓扑图处理)
  • 原文地址:https://www.cnblogs.com/wmx24/p/8727227.html
Copyright © 2011-2022 走看看