2011-10-26 26 views
0

可能重複:
Reversing Linked List - C++在C++ MY反向列表功能無法正常工作

我一直對我的功課,因爲星期一,我仍然無法找到原因我的反向列表函數沒有返回一個反向節點。我檢查,雙重檢查,甚至三重檢查,但仍然。任何幫助將不勝感激。我在Vista上使用dec-C++。這是我的功能:

List::ListNode *List::Reverse_List(ListNode *head) 
    { 

     ListNode* result = NULL; 
     ListNode* cur = head; 
     ListNode* next; 

      while (cur != NULL) 
     { 
      next = cur->next; 
      cur->next = result; //move the node into result 
      result = cur; 
      cur = next; 

     } 

     head = result; 
     return result; 

    } 
+1

不是這樣的DUP:http://stackoverflow.com/questions/7897302/reversing-linked-list- ç –

+0

這似乎熟悉 – Dani

+1

順便說一句,如果你的意思是「開發 - C++」,而不是「DEC-C++」,你可能會想讀此:http://stackoverflow.com/tags/dev-c%2b%2b/info –

回答

1

嘗試使用鉛筆在紙上繪圖在您的堆內發生了什麼。然後你就會明白如何改進你的代碼。

和更C++具體的方式,你可以使用模板化的集合像std::list<>std::vector<>

+0

在編輯器上編寫代碼之前,我總是從紙上開始。對於這個問題,由於某些原因,我無法得到逆轉的點頭。一切對我來說都是正確的。但是,它不會返回列表。 – T4000

+0

然後在鉛筆和紙的幫助下使用像gdb這樣的調試器來了解發生了什麼。在Linux上確保你的指針地址可以從一次運行重現到下一次的有用技巧是'echo 0>/proc/sys/kernel/randomize_va_space',否則指針值從一次運行變爲下一次運行。 –