[問題] 關於在list 中移除節點

看板C_and_CPP作者 (K211)時間15年前 (2009/04/20 00:23), 編輯推噓3(306)
留言9則, 2人參與, 最新討論串1/1
node* ptr,pre_ptr = NULL; for(ptr=head->link;ptr!=NULL && ptr->x!=x;ptr=ptr->link)pre_ptr = ptr; if(pre_ptr==NULL) ptr ->head = ptr->link; else pre_ptr->link = ptr->link; 請問這段程式有錯嗎 這是一個fuction 起初還可以執行 但被執行幾次後就會錯誤 而且出在 else pre_ptr->link = ptr->link; 這邊 請高手指教一下 ~"~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.208.131

04/20 00:41, , 1F
你的 pre_ptr 不是等於 ptr 嗎?
04/20 00:41, 1F

04/20 00:42, , 2F
這樣 pre_ptr->link = ptr->link; 有什麼意義?
04/20 00:42, 2F

04/20 01:01, , 3F
pre_ptr = ptr的下一行指令不是ptr = ptr->link嗎
04/20 01:01, 3F

04/20 01:02, , 4F
ptr=ptr->link後檢查條件跳出迴pre_ptr不是會在ptr之前嗎?
04/20 01:02, 4F

04/20 01:54, , 5F
阿 我搞錯了...抱歉!那你貽除掉的節點有釋放記憶體嗎?
04/20 01:54, 5F

04/20 01:54, , 6F
移除
04/20 01:54, 6F

04/20 02:09, , 7F
痾 我也抱歉 其他地方的程式碼使得 ptr->x永遠不等於x
04/20 02:09, 7F

04/20 02:10, , 8F
所以是錯在ptr->link (ptr已為NULL) g大 謝嚕
04/20 02:10, 8F

04/20 14:14, , 9F
好像沒幫到忙 ...
04/20 14:14, 9F
文章代碼(AID): #19wq_wBB (C_and_CPP)