双方向リストにおいて、利点は末尾への参照がO(1)になるなどありますが、
一般的な片方向連結リストに比べて
欠点は全くないのでしょうか?
ご教示願います。
何と比較しての話なのかを明確にされると良いかと存じます
メンテがめんどいのは欠点じゃないのかなあ。
「順序列」としての利点/欠点というのなら、配列との比較かもしれませんしね。
すみません、配列ではなく片方向連結リストとの比較です。
片方向でも末尾の参照は O(1) にできますし、双方向でも O(n) にできます。これはヘッダの仕様に依存するもので、本質的に片方向・双方向とは無関係です。
本来ヘッダは先頭リストを指しており、最後尾を探すために先頭から辿る必要があるので単一方向リストはO(n)だと思ったのですが、
そのヘッダに最後尾へのポインタを追加すれば O(1) になります。最後尾にノードを追加していくことの多いリストの場合、いちいち最初からたどるのではパフォーマンスが悪いので、そのような実装にすることも多いです。
すみません、双方向リストは先頭と末尾が繋がっているものと誤認していました。
その場合は、単一方向リストではなく、循環リストの場合であっていますよね。
つまり、最初のノードをそのままヘッダとして使うのではなく、最初のノードの前にヘッダ専用の型のオブジェクトがあるリストですね。
すみません、その場合は双方向リストと循環リストの合体のような場合でした。
循環はしていません。最後尾のノードは何も指さなくて良いので。
循環と方向は別の次元の話になります。

回答4件
あなたの回答
tips
プレビュー