【问题标题】:Displaying all nodes in Linked List显示链表中的所有节点
【发布时间】:2013-10-19 04:12:21
【问题描述】:

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

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

输出:无数次重复第一个元素。 预期输出:我不想重复,而是显示所有节点的所有元素。

我错过了什么?请大家指点一下?

【问题讨论】:

    标签: java


    【解决方案1】:
    while(cur.getNext() != null) {             
       s += cur.getShare() + " @ " + cur.getPrice();
       cur = cur.getNext();
    }
    

    我已经分配了cur = cur.getNext(),您是否没有将cur 重新分配给下一个节点。我也删除了cur.setNext(cur);

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

    【讨论】:

    • 谢谢,这是我犯的愚蠢错误。如果我要调整你的代码,我会输入 cur = cur.getNext();在循环的第二行而不是首先因为我还想显示前面的元素。您立即将 cur 指针设置为下一个,最终也不显示前面的元素。
    • 我还将 s 设置为空字符串而不是 null。
    • 我已经编辑了答案,使其成为第二行。我也犯了愚蠢的错误:)
    • 再次感谢指正,忘记设置为getNext。
    • 没问题。很高兴能提供帮助。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多