直線上に配置


データ構造の種類
  • データ構造とは

    データはただ記憶するだけではなく操作(取出、追加、
    削除、更新)が必要です。データのつながりを考慮した

    記憶管理の方式をデータ構造と呼び処理に応じて
    様々な方式を使い分けます

  • 配列
     データをグループ化(物理的に連続)
     同じ種類(数値、文字)、要素数固定

     ※1次元、2次元の表など
     ※すべてのデータ構造のベースとなる(メモリの構造に従う)

    配列のイメージ
    第1
    要素

    (0)
    第2
    要素
    (1)
    第3
    要素

    (2)
    第4
    要素

    (3)
    第5
    要素
    (4)
    「配列名」(配列全体の名前)
    「添え字」(要素の連番)
    ※プログラムでは「0」から数えることが多い


    要素の特定

    配列名(添え字) 
    (例) DATA(0)


    (応用)

    • キュー(待ち行列)
      データを記憶順で管理
      データを末尾に追加し、先頭から取り出す
      (先入先出:FIFO)

      (Dequeue) ←   ← (Enqueue)
      1番目
      の要素
      2番目
      の要素
      3番目
      の要素
      4番目
      の要素
      ※キー入力、印刷処理、ログ出力

    • スタック(積重ね)
      データを記憶順で管理
      データを末尾に追加、末尾から取り出す
      (後入先出:LIFO)

      (Push)↓  ↑(Pop)
      3番目の要素
      2番目の要素
      1番目の要素
      ※プログラムの制御(ローカル変数、関数のアドレス)
       CPU内のスタックポインタ、メモリのスタック領域を利用

  • リスト構造
    連結リスト
    データに付加情報を追加→
     記憶順とは別に論理的な順序を割り当てる
     ※必ずしも整列ではなく順序付けられたデータの集まり
     (例)ファイルやメールの並び替え順など

    ※付加情報
    次のデータの場所(アドレス)
    ポインタとも呼ばれる
    ポインタ(アドレス)の変更でデータの追加、削除が可能
    ※要素数が可変

    (追加の例)

    「い」と「う」の間に
    「か」を追加 →

    ※2次元配列を利用


    (種類)
    ・線形リスト
    (1) 単方向リスト 次のデータへのアドレスを付加
    先頭 → 中間 → 末尾

    (2) 双方向リスト 前後のデータへのアドレスを付加
    先頭 ← → 中間 ← → 末尾

    ・循環リスト
    (3) 循環(環状)
    リスト
    双方向に加え、先頭と末尾も
    それぞれのアドレスを持つ
    ↑    →      →    ↓
    先頭 ← → 中間 ← → 末尾
    ↑    ←      ←    ↓

    ※最終的にリスト完成後は配列へ変換することが多い
    →データの検索などが行いやすいため


  • ツリー構造
     データを階層的に管理
     親子関係(1:多)

    (根:ルート)
    (枝:ブランチ) |−−−−−−−|
    ○           ○
    (節:ノード 又は 葉:リーフ)
    ※ファイル管理(フォルダ、ファイル)、DB

    (種類)
    • 2分木
      節から分岐する枝が2本以下
      ※完全2分木(左から順に子を作る)

    • 2分探索木
      2文木であり、データの関係が
      「左の子 < 親 < 右の子」
      ※バランス木(AVL木)
       親子の階層差が1以内

    • 多分木
      枝が3本以上
      ※多分探索木(B木)
       ルートからの深さがすべて等しい
       リーフのみデータを持ち、その他はインデックスの役割

    (2分探索木を配列で表現)
       
     → 
    (右)
    データ
    (左)


    (データ探索 例:「お」)
    (1)「お」>「う」 → (2)「お」>「え」 → (3)「お」=「お」


    (木の巡回)

    • 幅優先順(根から同じ階層)

    • 深さ優先順

      1. 先行順(親、左、右 ※ポーランド)

      2. 中間順(左、親、右 ※算術式、二分探索木ソート順)

      3. 後行順(左、右、親 ※逆ポーランド、コンパイラ)

      (例) 先行、中間、後行順での式の表現


      (先行) −+12+34
      (中間) 1+2−3+4
      (後行) 12+34+−



授業資料メニュー

お問合せフォーム

トップ アイコン
トップページへもどる


直線上に配置