当前位置: 首页 > 知识库问答 >
问题:

Java-反向打印双链接列表

董宜然
2023-03-14

我试图打印一个双链接列表,从tail元素开始,以first元素结束。我下面的代码就是这样做的,但出于某种原因,我也返回了被删除的项目。当我从头到尾打印列表时,它不会这样做。Idk,如果是toString导致了这个或dequed方法。我把两者都包括在内。

public String toString() {

    String result;

    if (isEmpty())
        return "empty";
    else {
        result = "";
        DoubleNode current = tail;

        while (current != null) {
            result = result + current.getElement() + " ";
            current = current.getPrev();
        }
    }
    return result;
}


public Item dequeueBack() throws NoSuchElementException {
    if (isEmpty())
        throw new NoSuchElementException("deque is empty");

    Item result = tail.getElement();
    tail = tail.getPrev();
    count--;

    if (isEmpty())
        head = null;
    else
        tail.setNext(null);

    return result;
}

共有1个答案

秦飞航
2023-03-14

当你退出队列时,你不需要设置Prev,所以那些链接(你打印的是基于这些链接的)仍然有效。

 类似资料:
  • 在下面的双向链表示例中,我可以将节点添加到双向链表的前面和双向链表的末尾。我还可以向前遍历双向链表并成功打印节点的值。当我向后打印列表时,我的tail.previous值为空,我只能打印当前在尾部的节点值。请告诉我出了什么问题。谢谢。 测试代码如下:公共类DDLTest{

  • 我有一个家庭作业要写“先到先得”和“循环模拟”,并对它们进行比较。我开始创建一个链表来制作事件列表。我已经实现了插入和打印列表功能,但无法正常工作。我的朋友告诉我使用双链表,所以我重新创建了链表,并试图使打印功能工作。我有一个关于插入函数的问题,因为我在while循环中的语句顺序有误。在修复了许多错误后,print函数会多次打印同一个节点,而不是整个列表。我不知道程序的哪一部分是错的。我认为我在i

  • 我试图以相反的顺序打印一个链表,但实际上没有使用递归进行反转,但我的输出结果非常奇怪。看起来我的代码基本上选择了第一个节点,并在打印完链表的其余部分(按原始顺序)后将其打印出来。我所写的代码(据我所知)是正确的,并且与internet上解决此问题的代码相匹配。 这是我的代码: 以下是节点类: 这是我给出的输入,然后是输出: 这里发生的另一个奇怪的事情是,如果我改变递归的条件,假设我这样做: 然后是

  • 我正试图把我的脑袋围绕着我在编程集中遇到的一个问题。 我们应该编写从文件中读取并打印出来的代码。我明白,我能做到。 他要我们做的是把它反向打印出来。 文件内容如下: 下面是改进后的代码,我尝试将其放入数组中。 数组中的数据没有打印出来。

  • 我正在尝试反转一个链表,我为此编写了代码。但是,当我在反转后打印列表时,输出有点不完整。 产量:120 110 100