2017-01-13 14 views
1

N個の要素を含む循環単一リンクリストの最後にノードを挿入する時間の複雑さ?最初のノードへのポインタがあるとします。循環リンクリストの最後にノードを挿入するのに時間の複雑さ?


私は、次のフィールドを変更するために新しいノードの前にノードにLLを解析する必要があるので、O(N)だと思います。

私はそれを正しく持っていますか?

+0

リストはシングルリンクですか?そうであれば、あなたの答えは正しいです。ただし、二重リンクリストの場合は 'O(1)'で解決することは可能です。 – kraskevich

+0

別のトリックは、最初のノードの代わりに最後のノードへのポインタを持つことです。この方法で、最後と前の両方にO(1)に挿入することができます。 – Henry

答えて

0

円の単一リンクリストの末尾に追加するには、O(1)時間で実行できます。

  1. 新しいノードを作成し、ヘッドノードの後に​​挿入します。
  2. データをヘッドからこの新しいノードにコピーします。
  3. 新しいヘッドノードに新しいデータを追加します。
  4. 頭を再割り当てします。

これらはすべて定数時間演算であるため、この手順はO(1)です。

関連する問題