leetcode 21 Merge Two Sorted Lists

題目鏈接:https://leetcode.com/problems/merge-two-sorted-lists/

題目的意思很是明確,把兩個鏈表進行鏈接。然後,返回新的鏈表的首結點。

比較簡單,由於很久沒有寫關於鏈表的東西了,一直因爲越界等一些小小的問題而錯誤。還是需要多寫。

Code:

//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 *ans;
        /* 如果一個listnode 爲空的話,那麼這個指針直接爲空嗎?
         * 也就是說,如何判斷一個沒有頭結點的鏈表爲空?
         * Last executed input:
         * 有關鏈表的題目的話,最好是注意越界等問題
         * 先申請空間 然後再進行填值。
         * 其實,還可以直接把下一個結點指向老的結點。
        */
        ans = new ListNode(0);
        ListNode *res = ans;

        while(l1 != NULL || l2 != NULL){
            if(l2 == NULL || (l1 != NULL && l2 != NULL && (l1->val < l2->val))){
                ans->next = new ListNode(0);
                ans = ans->next;
                ans->val = l1->val;
                l1 = l1->next;
            }
            else {
                ans->next = new ListNode(0);
                ans = ans->next;
                ans->val = l2->val;
                l2 = l2->next;
            }
        }

        return res->next;
    }
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章