本文へスキップ

データ構造の基本

低頻約 27 分5 用語過去問 7 題

この単元の目標

  • リストの要素がポインタでつながる仕組みを説明できる。
  • スタックとキューを、データを取り出す順で区別できる。
  • 木構造の根・節・葉と、2分木の子の数の制限を説明できる。
用語総表(5 語)
用語ひとことで形取り出し方・たどり方
リストポインタで要素を一列につなぐ構造一列 (線形)先頭からポインタを順にたどる
スタック後入れ先出し (LIFO) の構造一列 (線形)最後に積んだものから取り出す
キュー先入れ先出し (FIFO) の構造一列 (線形)最初に入れたものから取り出す
木構造節が親子の階層で枝分かれする構造階層 (枝分かれ)最上位の節から子へたどる
2分木各節の子が 2 つ以下の木構造階層 (枝分かれ)最上位の節から左右の子へたどる

用語

リストは、各要素が次の要素の位置を示すポインタを持ち、それをつないでデータを一列に並べるデータ構造である。

位置データポインタ (次の位置)
1 (先頭)りんご3
2ぶどうなし (末尾)
3みかん2

図の例では、先頭のりんごからポインタをたどると、みかん、ぶどうの順に読める。並び順はポインタが決めるので、記憶されている位置の順と一致していなくてもよい。途中に要素を加えたり外したりするときは前後のポインタを書き換えるだけで済み、ほかの要素を移動させる必要がない。

たとえ宝探しのメモのようなもの。1 枚目のメモに次のメモの隠し場所が書いてあり、順にたどれば最後まで行き着く。

覚え方英語の list は「一覧・名簿」。名簿の行どうしを「次はこちら」の矢印で結んだ形と覚える。

出題のポイント

  • 混同注意配列は要素を連続した位置に並べて番号で直接参照する。リストはポインタで次の要素を決めるので、並べ替えや挿入で要素を動かさずに済む。

スタックは、データを積み重ねるように格納し、いちばん新しく入れたものから取り出す後入れ先出し (LIFO: Last In First Out) のデータ構造である。

  1. 赤を積む
  2. 青を積む
  3. 取り出す: 青
  4. 取り出す: 赤

もう一度取り出すと、残っていた赤が出る。

4 / 4

格納する操作をプッシュ、取り出す操作をポップと呼び、どちらも常にいちばん上の 1 か所で行う。Web ブラウザの「戻る」で直前に見たページから順にさかのぼる動きは、この性質の身近な例である。

たとえ机に積んだ本の山のようなもの。新しい本は山の上に置き、手に取るのも上からなので、最後に置いた本が最初に戻ってくる。

覚え方英語の stack は「積み重ね」。干し草の山 (haystack) の stack と同じ語。

出題のポイント

  • 出題スタックで次に取り出されるのは、その時点で格納されているデータのうち、最も新しく入れたものである。
  • 出題スタックに同時に積まれている 2 つのデータは、後から積んだ方が先に取り出される。この関係に反する取出し順は実現できない。

この用語の過去問 3 題 スタック

キューは、格納した順にデータを取り出す先入れ先出し (FIFO: First In First Out) のデータ構造である。

  1. 赤を入れる
  2. 青を入れる
  3. 取り出す: 赤
  4. 取り出す: 青

もう一度取り出すと、次に並んでいた青が出る。

4 / 4

データは列の末尾に加え、先頭から取り出す。格納する操作をエンキュー、取り出す操作をデキューと呼ぶ。プリンタが受け付けた印刷要求を到着順に処理する仕組みなどに使われる。

たとえ窓口の順番待ちの行列のようなもの。後から来た人は列の最後に並び、呼ばれるのは先に並んだ人からになる。

覚え方英語の queue は「順番待ちの列」。イギリス英語では列に並ぶことを queue up と言う。

出題のポイント

  • 出題キューで k 回目に取り出されるのは、k 番目に格納したデータである。途中でデータを追加しても、先に入ったデータが追い越されることはない。
  • 混同注意スタックは最も新しいデータから、キューは最も古いデータから取り出す。違いは格納の仕方ではなく、取り出す側がどちらの端かにある。

この用語の過去問 1 題 キュー

「スタック」と「キュー」の違い

観点スタックキュー
決め手取り出す順最後に入れたものから (LIFO)最初に入れたものから (FIFO)
出し入れの位置どちらもいちばん上の 1 か所入れるのは末尾、出すのは先頭
操作の名前プッシュ / ポップエンキュー / デキュー
身近な例ブラウザの「戻る」印刷要求の順番待ち

木構造は、データを表す節 (ノード) が親子の関係で枝分かれしながら、階層状につながるデータ構造である。

  • 社長
    • 営業部
      • 営業1課
      • 営業2課
    • 開発部
      • 開発課

さらに下の節が続き、子を持たない節で枝が終わる。

3 / 3

最上位にある親を持たない節を根 (ルート)、子を持たない末端の節を葉 (リーフ) と呼び、根以外の節はどれも親を 1 つだけ持つ。組織図やフォルダの階層のように、上下関係や包含関係を表すのに向いている。

たとえパソコンのフォルダのようなもの。1 つのフォルダの中に複数のフォルダが入り、その中にさらにフォルダやファイルが入っていく。

覚え方木を逆さにした形で描くので、根が上、葉が下に来る。

出題のポイント

  • 混同注意リストでは各要素の次につながる要素は 1 つまでだが、木構造では 1 つの節の下に複数の子がつながる。
  • 混同注意根は親を持たない節、葉は子を持たない節である。根は 1 つの木に 1 つだけだが、葉は複数ありうる。

「リスト」と「木構造」の違い

観点リスト木構造
決め手次につながる要素1 つまで複数の子がつながりうる
形一列 (線形)階層 (枝分かれ)
端の呼び名先頭 / 末尾根 / 葉

2分木は、各節の子が左の子と右の子の 2 つ以下に限られた木構造である。

  • 根
    • 左の子
      • 葉
      • 葉
    • 右の子
      • 葉

左右の子は区別して扱い、子が 1 つだけの節や、子を持たない葉があってもよい。例えば、値の大小で左右に振り分けて格納しておくと、目的の値を探すときにたどる節の数を減らせる。

たとえはい / いいえで進む診断チャートのようなもの。1 つの質問から先は「はい」と「いいえ」の 2 方向までに分かれ、片方にしか続きがない質問や、そこで結果が出て終わる質問もある。

覚え方読みは「にぶんぎ」。二股に分かれる枝の形を思い浮かべる。

出題のポイント

  • 混同注意2分木の「2」は子の数の上限である。すべての節が子をちょうど 2 つ持つという意味ではない。

要点

  • リストへの挿入・削除は、前後のポインタの書き換えで行い、ほかの要素は動かさない。
  • スタックに同時に積まれたデータは、後から積んだものほど先に取り出される。
  • キューでは、k 回目に取り出されるデータは k 番目に格納したデータである。
  • 木構造では最上位の親のない節が根、子のない節が葉であり、2分木は各節の子を 2 つ以下に限る。

確認問題

この単元の過去問から 3 題

確認問題を解く

この分野の過去問をすべて見る