作者haosan (K211)
看板C_and_CPP
標題[問題] 關於在list 中移除節點
時間Mon Apr 20 00:23:21 2009
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
1F:推 gundan:你的 pre_ptr 不是等於 ptr 嗎? 04/20 00:41
2F:→ gundan:這樣 pre_ptr->link = ptr->link; 有什麼意義? 04/20 00:42
3F:→ haosan:pre_ptr = ptr的下一行指令不是ptr = ptr->link嗎 04/20 01:01
4F:→ haosan:ptr=ptr->link後檢查條件跳出迴pre_ptr不是會在ptr之前嗎? 04/20 01:02
5F:推 gundan:阿 我搞錯了...抱歉!那你貽除掉的節點有釋放記憶體嗎? 04/20 01:54
6F:→ gundan: 移除 04/20 01:54
7F:→ haosan:痾 我也抱歉 其他地方的程式碼使得 ptr->x永遠不等於x 04/20 02:09
8F:→ haosan:所以是錯在ptr->link (ptr已為NULL) g大 謝嚕 04/20 02:10
9F:推 gundan:好像沒幫到忙 ... 04/20 14:14