1

我们从上次赋值中获得了以下代码,用于单链表,但我们应该添加一个getPrevious()andsetPrevious()方法。当我完成作业并获得 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;
    }
}
4

2 回答 2

1

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

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

于 2013-10-28T10:56:18.697 回答
1

那么……问题出在哪里?

Node previous;

public Node getPrevious() {
  return previous;
}

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

如果要创建列表doubly-linked-list,则必须实现“其他”相反方向的链接。您可以通过为每个节点添加另一个字段来实现。每次修改列表时,您还必须更新该字段。

于 2013-10-28T10:56:28.517 回答