[情報] C++ Primer 第三版的bug
我好像抓到了兩個bug, 請各位大大看一下對不對
在5.11的List實作中(侯捷版232頁)的remove_front()函數
原程式碼如下:
inline void ilist::remove_front()
{
if(_at_front)
{
ilist_item* ptr=_at_front;
this->_at_front=_at_front->next();
this->bump_down_size();
delete ptr;
}
}
但是當串列只剩下一個Node時,
移除的話_at_end會指向已經delete的Node,
所以我把他加了一行修改如下
inline void ilist::remove_front()
{
if(_at_front)
{
ilist_item* ptr=_at_front;
this->_at_front=_at_front->next();
this->bump_down_size();
if(_at_end==ptr) _at_end=NULL;//書上的bug,加此行更正
delete ptr;
}
}
第二個是reverse()函數(侯捷版P236~P237)的小bug
原程式碼的最後一行
_at_front->next(prev);
如果是空的串列,這行會錯
所以修改成
if(_at_front!=NULL)
{
_at_front->next(prev);
}
有錯請指正
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.31.134.250
推
07/20 19:36, , 1F
07/20 19:36, 1F
推
07/20 19:48, , 2F
07/20 19:48, 2F
推
07/21 00:14, , 3F
07/21 00:14, 3F
推
07/21 03:03, , 4F
07/21 03:03, 4F
推
07/21 11:21, , 5F
07/21 11:21, 5F
推
07/21 15:37, , 6F
07/21 15:37, 6F
→
07/21 15:38, , 7F
07/21 15:38, 7F
推
07/21 15:41, , 8F
07/21 15:41, 8F
→
07/21 22:45, , 9F
07/21 22:45, 9F
推
07/23 17:35, , 10F
07/23 17:35, 10F
推
07/23 18:09, , 11F
07/23 18:09, 11F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章