連結リストと配列とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 連結リストと配列の意味・解説 

連結リストと配列

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/29 20:30 UTC 版)

連結リスト」の記事における「連結リストと配列」の解説

配列連結リスト検索 O(1) O(n) 最後尾での挿入/削除 O(1) O(1) or O(n) 途中で挿入/削除位置指定あり) O(n) O(1) 永続性 なし 片方向で有り 局所性 大 小 連結リスト配列比較したとき、いくつかの利点を持つ。リストでは要素挿入無制限に可能であるが、配列サイズ決まっているために限界があり、配列大きくようとしても、メモリフラグメンテーションによって不可能なこともある。同様に配列から要素多く削除する領域の無駄となったり、サイズ小さくする必要が生じる。 複数リスト尾部共有することで、さらにメモリ節約できる場合もある。つまり、先頭複数あって、末尾1つになっている構造が可能である。これを使って何らかのデータの古いバージョン新しバージョン同時に保持することが可能であり、簡単な永続データ構造の例となっている。 一方配列ランダムアクセス性に優れており、連結リストシーケンシャルアクセスを得意とするのと対照的である。片方向リスト一方向にしか辿れない。従って、ヒープソートのようにインデックスによって高速要素参照する必要がある場合連結リスト不向きである。シーケンシャルアクセス多くマシン上では、連結リストよりも配列の方が高速である。これは、キャッシュメモリ効果参照の局所性よるものである。連結リストキャッシュメモリからはほとんど何も恩恵受けない連結リスト別の欠点は、参照のための余分な領域を必要とする点である。このためキャラクタブーリアン型のような小さなデータ要素連結リスト操作するのは(1文字ごとにノード割り当てて文字列操作実現するなど)、速度の面でもメモリ消費の面でも無駄が多く現実的でない。 これらの問題一部改善する連結リスト派生データ構造いくつか存在するUnrolled linked list は各ノード複数要素格納するもので、キャッシュ性能を向上させ、参照時のメモリオーバヘッド低減させるCDRコーディング参照参照すべき実データ置換することで同様の効果得られる配列との比較利点と欠点明確にする好例として、ジョセファスの問題を解くプログラム実装がある。ジョセファスの問題とは、人間が輪になって並んでいる状況で、そこから1人を選ぶというものである。ある人を開始点として、特定の方向に n 人を数えていく。n 番目の人に到達したら、その人を輪から外して残り人間一回り小さい輪を作る。そして再び n 番目まで数えていく。これを1人だけが残るまで繰り返し最後に残った人が選ばれた人ということになる。これを循環リスト使って表すのは直接的分かり易いし、ノード削除も簡単である。しかし、循環リストでは、現在のノードから n 番目のノードを見つけるには、リストを順に辿っていくしかない配列であればインデックス計算即座につけられる一方配列では要素ノード)の削除は容易ではなく、n 番目のノード即座に見つけるという利点生かすには、ノード削除したときに残った要素詰めてやる必要がある

※この「連結リストと配列」の解説は、「連結リスト」の解説の一部です。
「連結リストと配列」を含む「連結リスト」の記事については、「連結リスト」の概要を参照ください。

ウィキペディア小見出し辞書の「連結リストと配列」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「連結リストと配列」の関連用語

連結リストと配列のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



連結リストと配列のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの連結リスト (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS