[問題] 關於link list的題目

看板C_and_CPP (C/C++)作者 (LOL)時間10年前 (2016/02/01 17:16), 編輯推噓4(404)
留言8則, 5人參與, 最新討論串1/2 (看更多)
附上題目截圖 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

02/01 17:40, , 1F
最後一個節點的 rlink 不能直接改成 NULL 嗎?
02/01 17:40, 1F

02/01 17:41, , 2F
在 delete 之前,先處理所有指向這個物件的指標
02/01 17:41, 2F

02/01 23:01, , 3F
A->link如果是null就會掛了吧
02/01 23:01, 3F

02/01 23:05, , 4F
哦 看錯 雙向就指標回指回來時就是結束
02/01 23:05, 4F

02/01 23:49, , 5F
NCHU的考古題嗎!?
02/01 23:49, 5F

02/03 15:50, , 6F
delete只是跟記憶體說,那個位子可以用了,指標還是會指
02/03 15:50, 6F

02/03 15:51, , 7F
到原先的地方
02/03 15:51, 7F

02/04 01:04, , 8F
A->llink->rlink = NULL;
02/04 01:04, 8F
文章代碼(AID): #1Mho9L3b (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Mho9L3b (C_and_CPP)