我试图在单链表中重载operator--。
我有一个节点类: T信息 nodeType * link
Iterator类(它是单链表的朋友): nodeType * first nodeType * current bool offTheEdge
Singly Linked List类: *第一 *最后
我已经成功修改了operator ++方法,并且我正在通过所有测试。代码如下:
if(offTheEdge == true)
{
return *this;
}
else
{
if(current->link == NULL)
{
offTheEdge = true;
return *this;
}
else
{
current = current->link;
}
}
return *this;
我的说明如下: 与运算符++相同,但后退。在一个单独的链表中倒退 意味着您必须从头开始,并确定此>当前所在的节点。
请帮助,无论我尝试什么,我都无法获得以前的元素并向后工作。谢谢!
我的运营商代码是:
ListIterator<T> temp;
temp.current = first;
while(temp.current->link != this->current)
{
temp.current = temp.current->link;
}
return temp;
如果我的清单是2,4,6,8,10,12,14,16,18,20 ....它每次都会返回20
答案 0 :(得分:0)
据我所知,实际的迭代器在代码中不会改变。在您的operator ++代码中,您有current = current->link
,但在运算符中 - 您只改变临时迭代器(即。
this->current
从未真正改变过。)