1
我想從LeetCode解決問題。奇數偶數鏈接列表運行時間錯誤爲一個特定的輸入。運行一切正常
問題
給定一個單向鏈表,組中的所有節點奇一起其次,即使節點。請注意這裏我們談論的是節點號而不是節點中的值。
你應該嘗試做到位。該程序應運行在O(1)空間複雜度和O(節點)時間複雜度。
實施例: 鑑於1-> 2-> 4-> 5→NULL, 返回1-> 3-> 5→2-> 4-> NULL。
我的解決方案:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
ListNode *even, *firsteven, *odd, *curr;
if(head == NULL)
return NULL;
odd = head;
even = head;
curr = head;
if(head->next) {
even = even->next;
firsteven = head->next;
}
else return head;
if(head->next->next)
curr = head->next->next;
else return head;
while(curr) {
even->next = curr->next;
curr->next = NULL;
odd->next = curr;
curr->next = firsteven;
odd = odd->next;
even = even->next;
even->next ? curr = even->next : curr = NULL;
}
return head;
}
};
我的解決方案工作得很好所有輸入除了尺寸3. 輸入對於一個輸入1-> 2-> 3我得到一個運行時間錯誤。我已經幹了好幾次了。我不知道爲什麼我得到運行時錯誤。
你能告訴我我做錯了什麼嗎?
但是,爲什麼會導致錯誤? curr-> next被設置爲NULL。所以不應該 - >下一個簡單地被分配等於NULL?這是如何導致運行時錯誤? – Piyush