1. 程式人生 > >leetcode 21:合併兩個有序連結串列

leetcode 21:合併兩個有序連結串列

題目:合併兩個有序連結串列

  • 題目描述:
    將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。

  • 示例:

    輸入:1->2->4, 1->3->4
    輸出:1->1->2->3->4->4

/**
 * 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 temp_head(0); //設定臨時頭節點temp_head ListNode *ptr = &temp_head; //使用pre指標指向temp_head while(l1&&l2){ //l1和l2不空時,對它們進行比較 if(l1->val < l2->val){ //如果l1對應的節點小於l2對應的節點
ptr->next = l1; //將ptr與較小的節點進行連線 l1 = l1->next; } else{ ptr->next = l2; l2 = l2->next; } ptr = ptr->next; //ptr指向新連線的節點 } if(l1){ //如果l1有剩餘 ptr->next = l1; //將l1接到ptr後
} if(l2){ ptr->next = l2; //將l2接到ptr後 } return temp_head.next; } };