皆さんこんにちは、メイです。
序文
これまで、多くの初心者がデータ構造の内容について質問しにきましたが、その質問は基本的に、リンク リスト、スタック、キュー、ツリーについてどうやって学ぶかというものでした。
私もその通りだと思う一方で、彼らはデータ構造についてあまり知らないのではないかと感じています。
私は彼らに、最初に学ぶべき構造はリンク リストでもスタック キューでもないと言いましたが、次のように言いました。
リニアテーブル!
最も基本的なデータ構造
線形リストは最も単純で最も一般的に使用されるデータ構造であるため、最もよく使われるリンク リスト、循環リンク リスト、静的リンク リストも線形リストから派生しています。
線形テーブルの論理構造
同じデータ型の n (n>0) 個のデータ要素 (ノードとも呼ばれます) で構成される順序付けされたシーケンス。
特徴:
データ要素は順序付けされ、制限されます。
構造:
最初のデータ要素 (最初のノード) は一意で先行がなく、最後のデータ要素は一意で後続 (末尾ノード) がなく、残りのデータ要素には 1 つの直接先行と 1 つの直接後続のみがあります。
線形テーブルの一般的な外観
アドバンテージ:
柔軟かつシンプル
延長/短縮可能
データ要素へのアクセス、挿入、削除などが可能です。
9つの基本操作
初期化
前提: 線形テーブルが初期化されていない
結果 : 空のテーブルとして初期化される
空のテーブルかどうかを判断する
前提: 線形テーブルが存在する
結果 : 空のテーブルは true を返し、空でないテーブルは false を返す
テーブルの長さを取得する
前提: 線形テーブルが存在する
結果 : 空のテーブルの場合は 0 を返し、空でないテーブルの場合は要素数を返す
要素を取得する
前提: 線形テーブルが存在する
結果 : i 番目の要素の値を返す
要素を挿入
前提: 線形テーブルが存在し、要素が有効である
結果 : データ要素が正常に挿入されました (長さ +1)
要素の削除
前提: 線形テーブルは空ではないテーブルです。
結果 : データ要素は正常に削除されました。長さは -1 です。
要素の位置の位置決め
前提: 線形テーブルが存在し、要素が有効である
結果 : 要素の位置番号を返す
破壊
前提条件: 線形テーブルが存在する
結果 : 線形テーブルが正常に破棄される
空
前提: 線形テーブルが存在する
結果 : 線形テーブルが空のテーブルとして設定される
上記 9 つの演算をどのように実装するかは、線形テーブルがどのような記憶構造を採用しているかによって異なります。
収納構造
そうです、異なるストレージ構造は異なる実装に対応します。
ストレージ構造は 2 つあります。
順次ストレージ
リニアテーブル + シーケンシャルストレージ = シーケンシャルテーブル
チェーンストレージ
リニアリスト + リンクストレージ = リンクリスト
まずはここに行って、次回に続きます。
まとめ
今回は、線形リストがすべての構造の出発点であることと、その特徴のいくつかについて簡単に説明しましたが、後で、逐次リストと連結リスト、および 9 つの主要な演算のコード実装に焦点を当てます。
待ちきれない場合は、個人学習のみを目的として、必要に応じてデータ構造とアルゴリズムの完全な学習教材を受講することができます。学習の進歩をお祈りします。
上記の内容がお役に立てば幸いです。
皆さんの学業の成功を祈っています。