これは、教科書の実装のリンク リスト クラスのスニペットです。
public class ListItem
{
Object item;
ListItem next;
public ListItem(Object item)
{
this.item = item;
next = null;
}
}
再帰のように見えます-クラスには、という名前のListItem
インスタンス変数もListItem
あります。この再帰を呼ぶのは適切ですか?
Pascal で連結リストを定義した方法を次に示します。再帰 ( pNodeType
、別名^NodeType
) と呼ばれるもののヒントが見られますが、上記の Java スニペットのようには感じられません。
type
**pNodeType** = ^NodeType ;
NodeType = record
name : string ;
next : **pNodeType** ; // conceptually, change the type to **^NodeType**
end ;
Javaにはポインターがなく、オブジェクトは参照であるため、結局同じものを見ていると思います。右?
したがって、二重にリンクされたリスト (後方も) が必要な場合は、次のようにインスタンス変数を追加します。
ListItem prev;
次のようにコンストラクターにコード行を追加します
prev = null;
フォワードリンケージを機能させたのと同じ量の注意を払います。
右?
最後に、一般的なリンク リストが必要な場合は、スニペットをそのように変更し、メソッド内のすべての "Object" を "E" に変更します):
public class ListItem<E> {
E item;
ListItem next;
public ListItem(E item) {
this.item = item;
next = null;
}
}
右?