0

配列の値は位置によって直接アクセスでき、リンクされたリストはそれらを1つずつ通過する必要があることを理解していますが、検索が行われているときのオーバーヘッドとストレージの違いを説明する方法がわかりません.

(前のノードが次のノードにアクセスしようとしている間に、システム部分の追加のストレージまたはオーバーヘッドにアクセスしようとしているときに、前のノードがどこかに一時的に格納する必要があるかという点で、より多くのことを考えています。配列を検索するときも同じです)

各構造を検索するとどうなるか、誰か詳しく教えてもらえますか? または単に正しい方向を指す

4

2 に答える 2

2

配列は固定サイズのベクトル変数です。

リンク リストには指定されたサイズがありません。リストの各要素には、次の要素へのポインタが含まれます。そのため、順番に繰り返す必要があります。ここでの利点は、構造体がメモリの連続ブロックに割り当てられず、さらに要素を追加してもサイズを変更する必要がないことです。

また、配列では、要素を削除する場合、以前のすべての要素をシフトする必要があります。配列の途中に要素を挿入する場合は、要素をシフトして新しい要素のためのスペースを作る必要があります。リストでは、ポインタを更新するだけです:

ここに画像の説明を入力

一方、配列はランダムにアクセスでき、シーケンシャル アクセスは必要ありません。そのため、オブジェクトの検索や並べ替えなどを高速に行うことができます。

于 2013-01-17T01:47:32.180 に答える
2

リスト要素へのランダム アクセスを使用すると、バイナリ検索などの検索アルゴリズムを実装できますが、これはリンク リストを使用すると実用的ではありません。

于 2013-01-17T01:49:10.507 に答える