Java, Doubly-Link List: 是我的逻辑错了吗?

Java, Doubly-Link List: Is my logic wrong?

我在布置家庭作业时遇到问题,使用迭代器遍历双向链表。以下是似乎有问题的方法,但在我看来逻辑上是正确的。我有一个用于传递列表的运行器文件,运行器文件向前和向后打印出来以查看我的链接是否正常工作。如果我使用 add(T element) 方法添加一个项目,它在向前和向后都可以正常工作。但是,如果我使用 add(T element, int index) 方法添加一个项目,列表将向前正确输出,但在向后迭代器上,新添加的项目不在输出中。

这让我怀疑 current.getNextNode().setPriorNode(newNode); 是问题所在,但它对我来说似乎是正确的,还是我错了?

谢谢!

更新:我用修复程序编辑了代码,以防将来其他人遇到同样的问题。

public void add(T element) {

    Node<T> node = new Node(element);

    if (itsFirstNode == null) {
        itsFirstNode = node;
        itsLastNode = node;
    }
    else {
        itsLastNode.setNextNode(node);
        node.setPriorNode(itsLastNode);
        itsLastNode = node;
    }
    size++;
} // end of add() method

  public void add(T element, int index) {
    int counter = 0;
    Node<T> newNode = new Node(element);
    Node<T> current = itsFirstNode;
    while (current.getNextNode() != null ) {
        if (counter == index - 1 )
            break;
        current = current.getNextNode();
        counter++;
    }
    newNode.setNextNode(current.getNextNode());
    current.getNextNode().setPriorNode(newNode);

    newNode.setPriorNode(current);
    current.setNextNode(newNode);

    size++;
} // end of Overloaded add() method
newNode.setNextNode(current.getNextNode()); 
current.setNextNode(newNode);

newNode 下一个设置正确,current 有下一个作为 newNode

newNode.setPriorNode(current);

newNode 事先设置正确

current.getNextNode().setPriorNode(newNode);

current.getNextNode()是newNode,所以你把newNode设置为newNode的先验。如果您将此行早移两行,它应该可以工作

而不是

current.getNextNode().setPriorNode(newNode);

尝试

newNode.getNextNode().setPriorNode(newNode);

您可以在最后 5 行使用以下代码

newNode.setNextNode(current.getNextNode());
current.getNextNode().setPriorNode(newNode);

current.setNextNode(newNode);
newNode.setPriorNode(current);

size++;