2016-05-31 23 views
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我得到一個運行時間錯誤。我已經幹了好幾次了。我不知道爲什麼我得到運行時錯誤。

你能告訴我我做錯了什麼嗎?

回答

0

問題是這一行:

even->next = curr->next; 

當電流被設置爲最後一個元素(3),你想下一個curr->,這將導致一個錯誤。

+0

但是,爲什麼會導致錯誤? curr-> next被設置爲NULL。所以不應該 - >下一個簡單地被分配等於NULL?這是如何導致運行時錯誤? – Piyush