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、つまりノードがリストにないことを修正すると、問題ははるかに簡単になります。

擬似コードの場合:

  • ルートの前を新しいノードに設定
  • ルートの横に新しいノードを設定します
  • ルートを新しいノードに設定します
于 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 に答える