配列を使ってリンクリストを実装する方法を知っています。たとえば のために、我々は次のように構造体の定義:配列を使ってリンクリストを実装する - 利点と欠点
struct Node{
int data;
int link;
}
「データ」ストアを見ると「リンク」は、次のノードの配列のインデックスを格納します。
「普通の」リンクリストと比較して、配列を使ってリンクリストを実装する利点と欠点は誰に教えてください。どんな提案も感謝します。
配列を使ってリンクリストを実装する方法を知っています。たとえば のために、我々は次のように構造体の定義:配列を使ってリンクリストを実装する - 利点と欠点
struct Node{
int data;
int link;
}
「データ」ストアを見ると「リンク」は、次のノードの配列のインデックスを格納します。
「普通の」リンクリストと比較して、配列を使ってリンクリストを実装する利点と欠点は誰に教えてください。どんな提案も感謝します。
リンクされたリストを配列に戻すと、両方ともの短所になります。したがって、これはおそらくそれを実装するための非常に良い方法ではありません。
いくつかの即時短所:あなたはメモリ
)
mmap()
コールで簡単に読み込むことができます。ただし、移植性のために何らかのプロトコルバッファを使用する方が良いでしょう。誰もが「普通」のリンクリストに比べ配列をリンクリストの実装の利点と欠点使用しているものを教えてもらえますか?
リンクされたリストは、以下の複雑さを持っている:
あなたのreprese ntationは厳格な、連続した配列を使用して、あなたは別の複雑さを持っています:
配列のように振る舞います。
厳密な配列のリンクリストまたはツリーを使用することで、これを緩和して、ロープや指の木や遅延配列につなげることができます。
スタックは2つの方法で実装します。 最初に配列を使用し、2番目にリンクリストを使用しています。
配列を使用する際にいくつかの欠点があり、プログラマのほとんどはスタック実装でリンクリストを使用します。
最初にリンクされたリストを使用するスタックは、スタックサイズを宣言しておらず、スタックにデータストアを限定していません。 2番目は、ポインタエッセイで宣言して使用するリンクリストです。
リンクリストでは1つのポインタのみを使用します。その呼び出されたトップポインタ。
スタックは、ライフメソッドの使用です。リンクリストプログラムの実装にはいくつかの欠点があります。
プログラマのほとんどは、好きなリストを使ってスタック実装を使用しています。
配列の実装を使用すると、&のリストのノードへのアクセスが速くなります。 ポインタを使用してリンクリストを実装すると、ノードにランダムアクセスできます。 配列の実装は、固定番号を扱うときに役立ちます。配列のサイズを変更すると、パフォーマンスの面ではコストがかかります。なぜなら、リストの途中からノードを挿入/削除する必要がある場合は、後ですべてのノードを移動する必要があるからです。 これとは逆に、ポインタがわからないときは、ポインタの実装を使用する必要があります。そのようなリストは効率的に拡大/縮小することができます。&ノードをシフトする必要はありません。参照先ポインタを逆参照するだけで実行できます。
挿入はO(1)であり、O(n)ではないので、配列とまったく同じではないようです。 – jcb