程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [LeetCode]Merge Two Sorted Lists

[LeetCode]Merge Two Sorted Lists

編輯:C++入門知識

[LeetCode]Merge Two Sorted Lists


Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.

這道題是讓合並兩個有序鏈表。增設一個頭結點。下面貼上代碼:

#include 
using namespace std;


struct ListNode {
     int val;
     ListNode *next;
     ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
public:
    ListNode* create(){
        int num;
        cout << "請輸入個數:";
        cin >> num;
        ListNode* head = new ListNode(0);
        ListNode* first = head;
        for (int i = 0; i < num; i++){
            int n;
            cin >> n;
            ListNode* newNode = new ListNode(n);
            head->next = newNode;
            head = newNode;
        }
        return first->next;
    }
    ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) {
        ListNode* h1 = l1;
        ListNode* h2 = l2;
        ListNode* ans = new ListNode(0);
        ListNode* l3 = ans;
        while (h1&&h2){
            if (h1->val <= h2->val){
                ans->next = h1;
                ans = h1;
                h1 = h1->next;
            }
            else{
                ans->next = h2;
                ans = h2;
                h2 = h2->next;
            }
        }
        ans->next = h1 ? h1 : h2;
        return l3->next;
    }
};
int main(){
    Solution s;
    ListNode* l1 = s.create();
    ListNode* l2 = s.create();
    ListNode* l3 = s.mergeTwoLists(l1, l2);
    while (l3){
        cout << l3->val << " ";
        l3 = l3->next;
    }
    cout << endl;
    return 0;
}

附加了鏈表的建立以便測試。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved