leetcode 21:合併兩個有序連結串列
阿新 • • 發佈:2018-12-30
題目:合併兩個有序連結串列
題目描述:
將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。示例:
輸入: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;
}
};