2012-12-01 28 views
-1

假如我有了一個指向名爲第一節點的雙向鏈表「第一」。現在假設我想爲這雙鏈表中刪除了「第一」的節點(假設功能能實現什麼在第二張圖片已經完成創建一個功能,即,一個新的指針節點已被宣佈爲先前的第一和第已經迭代過一次)。現在我的問題是:如果我先刪除新的,那麼現在第一個PREV是否指向NULL?如果不是,它指向什麼?從本質上講,我想知道是否需要顯式定義first-> PREV = NULL,或者刪除新的first將完成相同的任務。刪除時雙向鏈表中動態分配的內存會發生什麼?

注意:如果它是不明確的,向上的箭頭是上一個和向下箭頭是NEXT。

enter image description here

+0

我不明白你的形象是如何顯示的去除的第一要素。該列表中仍然有兩個元素。 –

+0

它沒有顯示刪除,而是直接刪除之前的步驟。 –

回答

2

你需要明確這樣做。當您釋放一個對象時,指向它的指針不會重置爲空;他們留下了懸掛。

+0

如果使用符合C++ 11的編譯器,應該鼓勵使用nullptr。 – ctor

+0

謝謝,感謝幫助! –

2

當你調用刪除剛剛免費內存,如果指針指向的內存區域不會改變它的值。
所以在刪除您還可以將指針設置爲刪除的區域爲NULL(或nullptr)節點的功能。

相關問題