ノードの配列を使った連結リストとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > ノードの配列を使った連結リストの意味・解説 

ノードの配列を使った連結リスト

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

連結リスト」の記事における「ノードの配列を使った連結リスト」の解説

参照型サポートしていない言語でも、ポインタ代わりに配列インデックスを使うことでリンクを実現できる構造体配列用意し、リンク用フィールドには配列インデックスを表す整数保持することで次(あるいは前)のノードを指すものとする配列にある全ノードを使う必要はない。構造体サポートされていない場合並列配列代替として使うことができる。 例として、次の構造体を示す。ポインタ代わりに配列インデックス使っている。 record Entry { integer next; // 次のエントリの配列インデックス integer prev; // 前のエントリ(双方向場合string name; real balance; } この構造体配列生成しリスト先頭インデックス保持する整数変数用意すれば連結リスト構築できるinteger listHead;Entry Records[1000]; 要素間のリンクはリスト上の次(または前)の要素配列インデックスNext あるいは Prev フィールド格納することでなされる例えば、次のうになるインデックスNextPrevNameBalance0 1 4 Jones, John 123.45 1 -1 0 Smith, Joseph 234.56 2 (listHead) 4 -1 Adams, Adam 0.00 3 Ignore, Ignatius 999.99 4 0 2 Another, Anita 876.54 5 6 7 この例で、ListHead は 2 になっており、そこがリスト先頭ノードである。3番と5から7番のエントリはリスト上に含まれていない。これらのセルリスト新たに追加することが可能である。ListFree という整数変数用意してフリーリスト構成しておくと扱いやすくなる全てのエントリが使われている場合配列大きさ拡張するか、一部要素削除して空き作らないと、新たな要素リスト追加できなくなる。 次のコードは、リスト辿ってnamebalance表示するのである。 i := listHead;while i >= 0 { // リスト上をループする print i, Records[i].name, Records[i].balance // エントリの印字 i = Records[i].next;} この手法の利点次の通りである。 リンクとしてアドレス使っていないので、リロケータブルメモリ上でコピー可能)である。また、直接シリアライズしてディスクネットワーク転送可能である。 小さリスト場合配列インデックスの方がポインタよりも小さくて済むことが多い。 ノードメモリ上に連続して存在するため、参照の局所性向上する可能性がある。 素朴な動的メモリ確保ノード用にメモリ割り当てると無駄が生じ可能性があるが、この方式ではノード毎のオーバーヘッドほとんどない事前に配列として確保されている範囲では、動的メモリ確保よりもノード生成高速化される。 ただし、この方式にはノード群のためのメモリ領域管理独自に行わなければならないという欠点がある。このため次のような問題生じる。 実装複雑になる。 全ノード使い切ったとき、配列拡張が困難か不可能な場合がある。汎用のメモリプールからノード用にメモリ確保するほうが容易である。 動的配列要素追加しようとすると、予期しないタイミング定数時間ではなく線形時間(O(n))がかかってしまう(平均すれば定数時間と言える)。 予想したよりもノード数の使用量が少ないと、メモリ無駄に確保することになる。 以上のような理由から、この手法は動的メモリ確保サポートしていない言語で主に利用される問題多くは、配列生成時にリスト最大サイズ分かっている場合には問題ではなくなる。

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

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



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

辞書ショートカット

すべての辞書の索引

「ノードの配列を使った連結リスト」の関連用語

ノードの配列を使った連結リストのお隣キーワード
検索ランキング

   

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



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

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

©2024 GRAS Group, Inc.RSS