2017-02-26 43 views
1

我想通過一個測試程序,並通過所有測試,除非涉及到我的擦除功能,程序崩潰。我的擦除()函數鏈接列表中的錯誤

我最好的猜測可能是正面或背面哨兵節點正在被擦除。或內存泄漏。

+0

你應該提供問題的一個最小的再現,這是太多的代碼。 – Kelm

+0

有2個參數擦除功能的問題,我不知道它是什麼 – bb13

+0

一旦打印「第7行測試」程序崩潰,並且永遠不會到達主線 – bb13

回答

1

我懷疑有人願意閱讀所有這些代碼,併爲您找到缺陷,尤其是在缺少MCVE的情況下。乍看之下有一些明顯錯誤的功能void erase(iterator it)

left->next_ = right;

right->prev_ = left;

你沒有,如果任正確檢查或左爲空,如果你刪除在開始發生或者在列表的末尾。您也應相應地修改列表front_back_

可以將這些任務之前增加一個檢查:

if(left) 
    left->next_ = right; 
else 
    front_ = right; 

if(right) 
    right->prev_ = left; 
else 
    back_ = left; 
+0

評論不適合長時間討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/136673/discussion-on-answer-by-ash-bug-in-my-erase-function-for-linked-list) 。 –