1. 程式人生 > >LeetCode:Merge Two Sorted Lists(合併兩個有序連結串列)

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.

Example:

Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4

思路

定義一個頭結點,然後迴圈對l1和l2比較,插入較小的節點,直到兩者有一個到了尾節點。最後把沒有達到尾節點的接到連結串列後即可。

程式碼

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {

        ListNode node(0);
        ListNode* head = &node;
        ListNode* temp = head; 

        while
(l1!=NULL && l2!=NULL){ if(l1->val<l2->val){ temp->next = l1; l1 = l1->next; }else{ temp->next = l2; l2 = l2->next; } temp = temp->next; } temp->next
= l1?l1:l2; return head->next; } };