这是Linked List类的一部分,用于显示所有节点。
这个方法试图做的是设置前面(是的,我正在使用前面而不是头部,这无关紧要,但我正在实现基于链表的队列)到指针,在这种情况下称为“cur”并检查cur next node是否为null,如果不是则获取元素(两部分,共享和价格)并将cur设置为下一个节点,冲洗并重复直到下一个cur(在它进入之前)是null,在这种情况下,它退出循环并打印最后一个cur(在null之前称为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;
}
输出:它无数次重复第一个元素。 预期输出:我不想重复,但会显示所有节点的所有元素。
我错过了什么?有什么指示吗?
答案 0 :(得分:2)
while(cur.getNext() != null) {
s += cur.getShare() + " @ " + cur.getPrice();
cur = cur.getNext();
}
我已分配cur = cur.getNext()
您是否未将cur
重新分配给下一个节点。我也删除了cur.setNext(cur);
你得到了无限循环,因为在while条件下你检查下一个节点不应该是null
但是你没有在循环中分配cur = next
,所以你留下在第一个节点上,循环无限。
答案 1 :(得分:1)
cur.setNext(cur)
看起来很可疑,就像你设置一个节点链接到它自己一样,这显然是一种无限的关系。