我发现了《C++ Primer题解》的一个小程序的bug
iamwh 2004-08-22 10:29:33 第五章 练习5.19(99页)
写出一个count()函数
里面有 while(i=find(value,i)){
i=i->next();
cnt++;
}
这是利用链表的find()函数统计一个值在链表中出现的次数,find()的第二个参数是一个 list_item*指针,默认是0,如果是0,则从链表的起始位置开始查找,否则从i开始查找
但是如果要查找的链表项正好是链表的最后一项,最后一项的->next()也是0,这样就会又从第一项开始查找,这样程序就会陷入死循环
解决方法是这样:
while(i=find(value,i)){
i=i->next();
cnt++;
if(!i)break;
}
我说的对不对呀? :)