1

这是显示所有节点的链接列表类的一部分。

该方法试图做的是将前端(是的,我使用前端而不是头部,这无关紧要,但我正在实现基于链表的队列)设置为一个指针,在这种情况下称为“cur”并检查是否cur 下一个节点不为空,如果不是,则获取元素(两部分,份额和价格)并将 cur 设置为下一个节点,冲洗并重复直到下一个 cur(在它进入之前)为空,在在这种情况下,它退出循环并仅打印最后一个 cur(在 null aka tail/rear 之前)。将所有元素添加到 s (通过连接)

public Object displayAll() {
        Node cur = front;
        Object s = null;
        while(cur.getNext() != null) {
             s += cur.getShare() + " @ " + cur.getPrice();
            cur.setNext(cur);
        }
        s += cur.getShare() + " @ " + cur.getPrice();
        return s;
}

输出:它无数次重复第一个元素。 预期输出:我不希望重复但显示所有节点的所有元素。

我错过了什么?请问有什么指点吗?

4

2 回答 2

2
while(cur.getNext() != null) {             
   s += cur.getShare() + " @ " + cur.getPrice();
   cur = cur.getNext();
}

我已经分配cur = cur.getNext()了你没有重新分配cur到下一个节点。我也删除了cur.setNext(cur);

你得到了无限循环,因为在 while 条件下,你检查下一个节点不应该是null,但没有在你分配的循环中的位置cur = next,因此你仍然在第一个节点上并无限循环

于 2013-10-19T04:16:28.727 回答
1

cur.setNext(cur)看起来很可疑,就像你正在设置一个节点来链接到它自己,这显然是一个无限的关系。

于 2013-10-19T04:14:49.983 回答