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 <iostream>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;}
附加了鏈表的建立以便測試。