題目鏈接: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;
}
};