作者fluteoner (NCU_CS)
看板C_and_CPP
標題[情報] C++ Primer 第三版的bug
時間Thu Jul 20 18:10:24 2006
我好像抓到了兩個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
1F:推 drkkimo:書為了解說方便可能會簡化程式碼 但本文也可以參考 07/20 19:36
2F:推 petertc:btw這本4/e中文版什麼時候要出呀:q 07/20 19:48
3F:推 aoc90058:至少年底會出吧 我覺得。不然就請內線幫忙催促催促XD 07/21 00:14
4F:推 fluteoner:第四版會差很多嗎?? 怎麼這麼期待 07/21 03:03
5F:推 cplusplus:我先期待第五版好了 應該會是在講0x XD 07/21 11:21
6F:推 pcjustin:超期待,看過英文版,內容排版差多了 07/21 15:37
7F:→ pcjustin:如果急得看中文版,其實大陸已經有不知名翻譯版出來 = = 07/21 15:38
8F:推 aoc90058:如果單從英文版來看,動向改變蠻大的,改變的相當不錯 07/21 15:41
9F:→ petertc:那裡有內線XD 07/21 22:45
10F:推 badsan:原來出到第三版了喔.我還再看第一版.~_~..看來要換書了.. 07/23 17:35
11F:推 DJWS:英文版第四版已經出了唷! 字體和排版都很好 ^^ 07/23 18:09