ホームページ  >  記事  >  リニアテーブルのリンクストレージ構造

リニアテーブルのリンクストレージ構造

(*-*)浩
(*-*)浩オリジナル
2019-06-04 09:40:2612955ブラウズ

シーケンシャル構造の欠点に対する良い解決策はありますか?

今日紹介する線形リストのリンク ストレージ構造は、シーケンシャル構造の欠点をうまく解決できます。一緒に見てみましょう。

チェーン ストレージ構造。リンク ストレージ構造とも呼ばれます。コンピュータでは、線形テーブルのデータ要素を格納するために、任意のストレージ ユニットのセットが使用されます (このストレージ ユニットのセットは連続的または不連続にすることができます)。 #基本紹介

リニアテーブルのリンクストレージ構造論理的に隣接する要素が物理的に隣接している必要がないため、逐次記憶構造の弱点はありませんが、逐次テーブルのランダム性も失われます。アクセスの利点.

特徴

1. ストレージ密度はシーケンシャル ストレージ構造よりも小さい (チェーン ストレージ構造の各ノードはデータ フィールドとポインタ ドメインは 2 つの部分で構成されており、シーケンシャル ストレージ構造と比較してストレージ スペースが増加します。

2. 論理的に隣接するノードは物理的に隣接している必要はありません。 3. 柔軟な挿入と削除 (ノードを移動する必要はなく、ノード内のポインタを変更するだけです)。

4. チェーン ストレージは、ノードを検索するときにシーケンシャル ストレージよりも遅くなります。

5. 各ノードはデータフィールドとポインタフィールドで構成されます。

6. クラスターはランダムに割り当てられるため、データ削除後の上書きの可能性が低くなり、復元の可能性が高くなります。

推奨コース:

C 言語チュートリアル

線形リストの最後の要素には直接の後続要素がないため、リンク ストレージでは、最後のノードのポインター フィールドを null に設定します。

これを実行してみましょう。単一リンク リストの特定のコード実装

typedef struct LNode{     
    ElemType data;          //数据域    
    struct LNode *next;     //指针域,用来指向本节点的直接后继
 }LNode,*LinkList;           //定义节点,以及头指针

多くの学生は、ヘッド ポインター、ヘッド ノード、最初のノードの関係と違いがわかりません。以下で簡単に区別しましょう。 。 下。

ヘッド ポインタ: リンク リストへのポインタです。リンク リストにヘッド ノードがある場合は、ヘッド ノードを指します。

ヘッド ノード: 先頭ノードの前の補助ノード最初のノード ノード、その次は最初のノードを指します最初のノード: これはノードであり、データ変数は最初のデータを格納し、次のポインター変数は 2 番目のノードを指します

ここで注目すべきは、ヘッドポインタは連結リストに必要な要素ですが、ヘッドノードはそうではないということです。では、ヘッドノードの存在意義は何でしょうか。

私の個人的な理解では、最初のノードの挿入と削除の操作を後続のノードの操作と一致させる必要があります。そうでない場合は、最初のノードを変更するときにヘッド ポインターを変更する必要があります。

リニアテーブルのリンクストレージ構造ヘッド ノードがない場合、ヘッド ポインタは最初のノードを直接指します。

以上がリニアテーブルのリンクストレージ構造の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。