正在看c++primer的请看(高手当然也能看拉)

看第五章的链表实例,那个反转函数:
void
ilist::
reverse()
{
ilist_item *ptr=_at_front;
ilist_item *ptev=_0;//
_at_front=_at_end;
_at_end=ptr;
while(ptr!=_at_front)
{ ilist_item *tmp=ptr->next();
ptr->next(prev);//
prev=ptr;//
ptr=tmp;//
}
_at_front->next(prev);//
}

}
小弟愚笨,看了几遍还是不明白,哪位高手能在关键地方(加//的地方)给注释一下
多谢拉
[427 byte] By [wqy1978-吃猫鱼] at [2007-12-16]
# 1
开眼!收藏!
sdx_none-穿石水滴 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 2
高手!up!!!
GoWish-GoWish at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 3
在jinfeng_wang(G-G-S,D-D-U)的注释下,我又好好看了看,自己也注释了一下,
请高手看有不对的地方么?
void
ilist::
reverse()
{
ilist_item *ptr=_at_front; //ptr是头
ilist_item *prev=_0;// prev为ptr前的节点,设置为0
_at_front=_at_end; // 原来是头现在是尾
_at_end=ptr; //原来的尾实在是头
while(ptr!=_at_front)//链表非空
{ ilist_item *tmp=ptr->next(); //定义一个过渡节点
ptr->next(prev);//ptr指向它的前一个节点
prev=ptr;//而的它的前一个节点指向ptr本身
ptr=tmp;//此时ptr指向它的下一个节点
}
_at_front->next(prev);
//因为以上while循环只处理到尾节点前的一个节点,故此时prev指向_at_end前的那个节点,该语句可使尾节点指向尾节点前的那个节点
}
wqy1978-吃猫鱼 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...