设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 939|回复: 0
打印 上一主题 下一主题

书上看到的链表问题!!

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-3 02:05:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实现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;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 05:40 , Processed in 0.103329 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表