这是链接列表类的一部分,用于显示所有节点。
此方法试图做的是将前面设置为指针(是的,我使用的是前端而不是head,这并不重要,但我正在实现基于链表的队列)到指针,在这种情况下称为" cur“,并检查cur下一个节点是否为空,如果它没有得到元素(两个部分,份额和价格)并将cur设置为下一个节点,清洗并重复直到下一个cur (在它进入之前)为空,在这种情况下,它退出循环并打印最后的cur(在空的尾/后)。将所有元素添加到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;
}
输出:它重复第一个元素无数次。预期的输出:我不想重复,而是显示所有节点的所有元素。
我遗漏了什么?有什么建议吗?
发布于 2013-10-18 20:16:28
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-18 20:14:49
cur.setNext(cur)
看起来很可疑,就像在设置一个连接到自身的节点,这显然是一种无限的关系。
https://stackoverflow.com/questions/19462275
复制相似问题