运营商 - 在链接列表中

时间:2013-09-30 02:52:06

标签: c++ iterator linked-list

我试图在单链表中重载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

1 个答案:

答案 0 :(得分:0)

据我所知,实际的迭代器在代码中不会改变。在您的operator ++代码中,您有current = current->link,但在运算符中 - 您只改变临时迭代器(即。 this->current从未真正改变过。)