2013-10-19 32 views
1

这是Linked List类的一部分,用于显示所有节点。显示链接列表中的所有节点

这个方法试图做的是设置前面(是的,我使用前端而不是头,这并不重要,但我正在实现基于链表的队列)到一个指针,在这种情况下称为“cur “并检查下一个节点是否为空,如果没有,则获取元素(两部分,共享和价格)并将该曲线设置到下一个节点,冲洗并重复,直到下一个节点(在它进入之前)是空的,在这种情况下,它退出循环,并打印最后一个曲线(在空aka尾部/尾部之前)。添加至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; 
} 

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

我错过了什么?任何指针?

回答

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

我已经分配cur = cur.getNext()是你不重新分配cur到下一个节点。此外,我已删除了cur.setNext(cur);

你都拿到无限循环,因为while条件你检查下一个节点不应该null但在循环中没有你在哪里分配cur = next,所以由于你留在第一个节点和无限循环

+0

谢谢,我的部分愚蠢的错误。如果我要调整你的代码,我会把cur = cur.getNext();在循环的第二行,而不是首先导致我也想显示前面的元素。您立即将cur指针设置为下一个,并最终不会显示前面的元素。 – user2770982

+0

我也将s设置为空字符串而不是null。 – user2770982

+0

哦,是的。我会编辑它。 –

1

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

+0

谢谢,我的部分愚蠢的错误。 – user2770982