标题:书上看到的链表问题!!
只看楼主
從霝開匙
Rank: 1
等 级:新手上路
威 望:1
帖 子:79
专家分:0
注 册:2007-8-28
 问题点数:0 回复次数:2 
书上看到的链表问题!!
实现remove()的一般做法也要利用remove_front()来处理特例即当一个或多个要被删除
的项位于链表头的时候否则我们用两个指针来迭代链表一个指向前一个元素另一个
指向当前元素在迭代过程中找到要被删除的项并删除它然后再重新连接链表下面是
实现代码:
这里面哪个地方是连接啊,红色字的地方为小弟自己的理解不对请指出谢谢

int
ilist::
remove(int value)
{
ilist_item*plist=_at_front;
int elem_cnt=0;
while(plist&&plist->value()==value)//如果当前值就是要找的值
{
plist=plist->next();
remove_front();
++elem_cnt;
}
if(!plist)//如果链表为空
return elem_cnt;
ilist_item*prev=plist;
plist=plist->next();//plist指向下一个值
while(plist)//下一个值不为零
{
if(plist->value()==value)//plist所指的值是要找的值
{
prev->next(plist->next());//这是什么意思啊,好像这里还有指针问题
delete plist;
++elem_cnt;
bump_down_size();//--_size这后面开始就不知道是干什么用的了
plist=prev->next();
if(!plist)
{
_at_end=prev;
return elem_cnt;
}
}
else
{
prev=plist;
plist=plist->next();
}
}
return elem_cnt;
}

[此贴子已经被作者于2007-10-9 16:59:19编辑过]

搜索更多相关主题的帖子: 链表 
2007-10-09 16:32
從霝開匙
Rank: 1
等 级:新手上路
威 望:1
帖 子:79
专家分:0
注 册:2007-8-28
得分:0 
怎么米人回答啊 1!大哥门帮帮忙

0→..................
2007-10-10 10:15
從霝開匙
Rank: 1
等 级:新手上路
威 望:1
帖 子:79
专家分:0
注 册:2007-8-28
得分:0 
大哥们帮忙解释下谢谢

0→..................
2007-10-18 13:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-176161-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.210072 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved