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

时间:2013-10-28 10:53:37

标签: java list linked-list

我们从上一个分配中获得了以下用于单链表的代码,但我们应该添加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;
    }
}

2 个答案:

答案 0 :(得分:1)

您只需要添加一个类似于next的额外成员,该成员将指向列表中的上一个节点。完成后,添加一个getter和setter将是微不足道的。

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

答案 1 :(得分:1)

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

Node previous;

public Node getPrevious() {
  return previous;
}

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

如果要将列表设为doubly-linked-list,则必须实现“其他”,反方向链接。您可以通过为每个节点添加nother字段来完成此操作。每次修改列表时,您还必须更新字段。