-1

我正在尝试在单链表中重载运算符。

我有一个节点类:T info nodeType *link

迭代器类(它是单链表的朋友):nodeType *first nodeType *current bool offTheEdge

单链表类:*first *last

我已经成功修改了 operator++ 方法,并且通过了所有测试。代码如下:

if(offTheEdge == true)
{
    return *this;
}
else
{
    if(current->link == NULL)
    {
        offTheEdge = true;
        return *this;
    }
    else
    {
        current = current->link;
    }
}

return *this;

我的指令如下:与operator++相同,但要倒退。在单链表中倒退意味着您必须从头开始,并确定 this->current 所在的节点后面。

请帮助,无论我尝试什么,我都无法获得以前的元素并向后工作。谢谢!

我的操作员代码 - 是:

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

4

1 回答 1

0

据我所知,实际的迭代器在您的代码中没有改变。在您的 operator++ 代码中,您有current = current->link,但在 operator-- 中,您只更改临时迭代器(即 this->current从不实际更改)。

于 2013-09-30T10:01:46.740 回答