[解決済み] リンクリストの途中への挿入はなぜO(1)なのか?
2022-05-14 03:59:52
質問
によると ウィキペディアのリンクリストの記事 によると、リンクリストの途中への挿入は O(1) とされています。 私はO(n)であろうと思います。 リストの末尾に近いノードを見つける必要はないのでしょうか?
この解析は、ノード操作の発見を考慮せず (必要ではありますが)、挿入そのものだけを考慮するのでしょうか?
EDIT :
リンクリストは配列と比較していくつかの利点があります。リストの特定のポイントへの要素の挿入は一定時間の操作ですが、配列への挿入は要素の半分、あるいはそれ以上を移動する必要があるかもしれません。
上記のステートメントは、私には少し誤解を招くものです。 私が間違っているならば訂正してください、しかし私は結論はそうあるべきだと思います。
配列です。
- 挿入/削除のポイントを見つける O(1)
- 挿入/削除の実行 O(n)
リンクされたリスト
- 挿入/削除のポイントを見つける O(n)
- 挿入/削除の実行 O(1)
位置を見つける必要がないのは、何らかのポインタを保持している場合だけだと思います(いくつかのケースでヘッドとテールがそうであるように)。 ですから、挿入/削除のオプションについて、リンクされたリストが常に配列に勝るとは、一概に言えません。
どのように解決するのですか?
その通り、この記事では "Indexing"を別の操作として考えています。つまり、挿入自体は O(1) ですが、その中間ノードに到達するのは O(n) です。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン