1

リンクリストのaddメソッドを実装しようとしていますが、どのデータ型でも使用できるはずですが、少し迷って機能していません。助けていただければ幸いです。

 public class LinkedList <T>extends AbstractList  {

 private class Node {

    T data;
    Node next;

    Node(T data, Node next) {
        this.data = data;
        this.next = next;
    }

    Node(T data) {
        this(data, null);
    }
}
Node first;
Node last;

public LinkedList() {
    first = null;
    last = null;
}

@Override
public boolean add(T item) {

    Node newNode = new Node((T)item);

    if (isEmpty()) {
        first = newNode;
        last = first;
        return true;
    }

    last.next = newNode;
    last = null;
    return true;
}

}

4

2 に答える 2

1

具体的な問題は教えてくれないので、修正することはできません。推測するだけです。

私が見ている問題の1つは、生の(非ジェネリック)タイプとして拡張することですAbstractList-代わりに宣言を行う必要があります

public class LinkedList<T> extends AbstractList<T>  { ... }
于 2012-04-17T15:58:17.727 に答える
0

必要なもの:

last.next = newNode;
last = newNode;

その理由を理解するように注意してください。

新しいノードを追加する前lastは、リストの最後のエントリへの参照です。

やりたいことは、この新しいノードへの参照を指すことです。 next

次に、2 行目が更新lastされ、この新しい行も参照されます。

于 2012-04-17T16:20:24.563 に答える