0

私の本では循環連結リストについては 1 ページにしか言及されておらず、単一連結リストまたは二重連結リストの先頭と末尾を相互に連結することでそれらを作成できると書かれています。しかし、プログラミング演習では次のように述べています。

「循環リンクされたリストには、頭や尾は必要ありません。代わりに、Iterator によって返される nextNode である現在のノードへの参照のみが必要です。そのようなクラスを実装します。空でないリストの場合、Iterator.hasNextメソッドは常に true を返します。」

これにどのようにアプローチすればよいかよくわかりません。

4

2 に答える 2

2

この演習は、実装の決定を制限しないように表現されています。特定のソリューションを規定するのではなく、最も便利な方法でリストを実装できます。

リストへのポインターが必要ですが、リストは循環しているため、特定の場所を指す必要はありません。頭や尾を指していないので、それをnextと呼び、便利な要素を指し続けることができます:

  • 挿入後、挿入nextしたばかりの要素を指すことができます
  • 削除後next、削除された要素の後または前の要素を指すことができます
  • 検索後、next変更されない可能性があります
于 2014-03-02T03:41:52.920 に答える
0

シングル リンク リストまたはダブル リンク リストを循環リストに変換するには、ヘッドとテールを ul リンクします。これで、リスト構造は循環になりました。したがって、ヘッド/テールは必要ありません。Bcoz すべてのノードが相互にリンクされているため、次のノードが null のポインターはありません。

また、循環リストには 2 種類あります。単一循環リスト - hasNext() メソッドのみを持ちます 二重循環リスト - hasNext() と hasPrev() を持っています

上記の方法は、循環リンクリストをトラバースする方法です。

于 2014-03-02T03:57:29.003 に答える