作者LoserOfLove (LOL)
看板C_and_CPP
標題[問題] 關於link list的題目
時間Mon Feb 1 17:16:02 2016
附上題目截圖
http://imgur.com/7P0TSnX
想請問第三小題,我一開始想到的解法如下:
while (A->rlink != NULL) {
A = A->rlink;
delete A->llink;
}
delete A;
A = NULL;
邏輯看似是對的,但實際執行時,發現被delete的記憶體空間並不會是NULL,而是亂數
所以當delete到最後一個節點時,此節點的rlink雖然已經被delete了,但不是NULL
導致A->rlink != NULL這個條件判斷變成無限迴圈
這題該怎麼解?不知道版上的朋友有沒有什麼建議?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.120.146
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1454318165.A.0E5.html
→ Feis: 最後一個節點的 rlink 不能直接改成 NULL 嗎? 02/01 17:40
→ Feis: 在 delete 之前,先處理所有指向這個物件的指標 02/01 17:41
推 justinj: A->link如果是null就會掛了吧 02/01 23:01
推 justinj: 哦 看錯 雙向就指標回指回來時就是結束 02/01 23:05
推 newkey: NCHU的考古題嗎!? 02/01 23:49
推 skypole: delete只是跟記憶體說,那個位子可以用了,指標還是會指 02/03 15:50
→ skypole: 到原先的地方 02/03 15:51
→ niorehkids: A->llink->rlink = NULL; 02/04 01:04