シーケンシャル構造の欠点に対する良い解決策はありますか?
今日紹介する線形リストのリンク ストレージ構造は、シーケンシャル構造の欠点をうまく解決できます。一緒に見てみましょう。
チェーン ストレージ構造。リンク ストレージ構造とも呼ばれます。コンピュータでは、線形テーブルのデータ要素を格納するために、任意のストレージ ユニットのセットが使用されます (このストレージ ユニットのセットは連続的または不連続にすることができます)。 #基本紹介
論理的に隣接する要素が物理的に隣接している必要がないため、逐次記憶構造の弱点はありませんが、逐次テーブルのランダム性も失われます。アクセスの利点.
特徴
1. ストレージ密度はシーケンシャル ストレージ構造よりも小さい (チェーン ストレージ構造の各ノードはデータ フィールドとポインタ ドメインは 2 つの部分で構成されており、シーケンシャル ストレージ構造と比較してストレージ スペースが増加します。
2. 論理的に隣接するノードは物理的に隣接している必要はありません。 3. 柔軟な挿入と削除 (ノードを移動する必要はなく、ノード内のポインタを変更するだけです)。
4. チェーン ストレージは、ノードを検索するときにシーケンシャル ストレージよりも遅くなります。
5. 各ノードはデータフィールドとポインタフィールドで構成されます。
6. クラスターはランダムに割り当てられるため、データ削除後の上書きの可能性が低くなり、復元の可能性が高くなります。
推奨コース:
C 言語チュートリアル。
線形リストの最後の要素には直接の後続要素がないため、リンク ストレージでは、最後のノードのポインター フィールドを null に設定します。
これを実行してみましょう。単一リンク リストの特定のコード実装
typedef struct LNode{ ElemType data; //数据域 struct LNode *next; //指针域,用来指向本节点的直接后继 }LNode,*LinkList; //定义节点,以及头指针
ヘッド ポインタ: リンク リストへのポインタです。リンク リストにヘッド ノードがある場合は、ヘッド ノードを指します。
ヘッド ノード: 先頭ノードの前の補助ノード最初のノード ノード、その次は最初のノードを指します最初のノード: これはノードであり、データ変数は最初のデータを格納し、次のポインター変数は 2 番目のノードを指します
ここで注目すべきは、ヘッドポインタは連結リストに必要な要素ですが、ヘッドノードはそうではないということです。では、ヘッドノードの存在意義は何でしょうか。 私の個人的な理解では、最初のノードの挿入と削除の操作を後続のノードの操作と一致させる必要があります。そうでない場合は、最初のノードを変更するときにヘッド ポインターを変更する必要があります。
ヘッド ノードがない場合、ヘッド ポインタは最初のノードを直接指します。
以上がリニアテーブルのリンクストレージ構造の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。