2

我必须实现双链表。prepend 方法应该在现有列表之前插入一个新元素。但我不知道如何将新元素的引用“next”与旧列表的引用“prev”链接起来。提前致谢。

public class DoublyLinkedList {

private String info;
private DoublyLinkedList next;
private DoublyLinkedList prev;

public DoublyLinkedList(String info) {
    this.info = info;
    this.next = this.prev = null;
}

private DoublyLinkedList(String info, DoublyLinkedList prev, DoublyLinkedList next) {
    this.info = info;
    this.prev = prev;
    this.next = next;
}

DoublyLinkedList prepend(String info) {
    // Beginning of a list, insert new element
    if (prev == null) {
        prev = new DoublyLinkedList(info, null, next);
    } else {
        prev.prepend(info);
    }
    return prev;
}
4

2 回答 2

2

首先命名你的类DoublyLinkedNode。一系列链接的此类对象将构成一个双向链表

使用正确的类名对您的思考非常重要。一旦你修复了你的 nsme ie node not list,问题应该变得容易多了。

在伪代码中:

  • 将根的上一个设置为新节点
  • 在根旁边设置新节点
  • 将根设置为新节点
于 2012-12-16T10:10:49.640 回答
0

您需要通过将新节点的 next_link 设置为当前节点来将新节点与当前节点链接。

public class DoublyLinkedList {
    ...
    DoublyLinkedList prepend(String info) {
        // Beginning of a list, insert new element
        if (prev == null) {
            // this is the changed line.
            prev = new DoublyLinkedList(info, null, this);
        } else {
            prev.prepend(info);
        }
        return prev;
    }
}
于 2012-12-16T09:58:39.993 回答