如何实现双链表的 getPrevious() 方法



我们从上一个赋值中得到了以下代码,用于单向链表,但我们应该添加一个getPrevious()setPrevious()的方法。以下代码适用于单向链表,因为我完成了作业并获得了 100%。

我在网上搜索并阅读了我的书,但找不到解决方案。对于单向链表,我会从头部开始迭代,直到getNext() == current或类似的东西。显然,这击败了双向链表的目的,所以有什么想法吗?

public class Node
{
    private Object item;
    private Node next;
    public Node()
    {
        this.next = null;
    }
    public Node(Object newItem)
    {
        this.item = newItem;
        this.next = null;
    }
    public Node(Object newItem, Node newNext)
    {
        this.item = newItem;
        this.next = newNext;
    }
    public Object getItem()
    {
        return this.item;
    }
    public void setItem(Object newItem)
    {
        this.item = newItem;
    }
    public Node getNext()
    {
        return this.next;
    }
    public void setNext(Node newNext)
    {
        this.next = newNext;
    }
}

您只需要添加一个类似于 next 的额外成员,该成员将指向列表中的上一个节点。这样做之后,添加一个吸气手和一个二传手将是微不足道的。

(当然,您需要更改链表的实现以正确填充此新成员。

那么... 问题出在哪里?

Node previous;
public Node getPrevious() {
  return previous;
}
public void setPrevious(Node node) {
  this.previous = node;
}

如果要使列表成为doubly-linked-list则必须实现"其他",相反方向的链接。您可以通过为每个节点添加 nother 字段来执行此操作。并且您还必须在每次修改列表时更新字段。

相关内容

  • 没有找到相关文章

最新更新