基本情報技術者試験のデータ構造入門|配列・リスト・スタック・キューを解説

【PR】この記事には広告を含みます。
基本情報技術者試験のデータ構造入門を初心者向けに解説

データ構造とは、かんたんに言うと「データの持ち方」のことです。

同じデータでも、どう並べるか、どうつなぐか、どう出し入れするかで、処理のしやすさが変わります。

たとえば、商品一覧を上から順番に見るなら、配列が分かりやすいです。ブラウザの「戻る」のように、最後に見たページから戻るなら、スタックの考え方が合います。印刷待ちのように、先に来たものから順番に処理するなら、キューが合います。

基本情報技術者試験では、データ構造の名前を覚えるだけでは足りません。

科目B全体の進め方を確認したい方は、基本情報技術者試験の科目B対策も参考にしてください。

どの順番でデータが入り、どの順番で取り出されるのかを、1つずつ追えることが大切です。

この記事では、配列、リスト、スタック、キューを中心に、初心者向けに順番に解説します。

目次

データ構造は何を学ぶ分野?

データ構造は、データをどのような形で持つかを学ぶ分野です。

プログラムでは、数値、文字、名前、点数、商品情報など、さまざまなデータを扱います。ただし、データをただ置くだけでは、うまく使えません。

あとから探しやすいか。順番に取り出しやすいか。途中に追加しやすいか。先に来たものから処理しやすいか。

このように、使い方に合った持ち方を考えるのがデータ構造です。

データをどう持つかを学ぶ

データ構造では、データそのものの意味だけでなく、持ち方を見ます。

たとえば、次のような点数があるとします。

80, 65, 90, 72

この点数を「1番目、2番目、3番目、4番目」と順番に並べて持つなら、配列として考えやすいです。

一方で、データ同士を「次はこれ」とつなげて持つなら、リストの考え方になります。

このように、同じデータでも持ち方は1つではありません。

出し入れしやすい形を考える

データ構造では、データを入れるときと出すときの動きも大切です。

たとえば、箱に本を上から積むと、最後に置いた本を最初に取り出しやすくなります。これはスタックの考え方です。

一方で、レジ待ちの列では、先に並んだ人から先に進みます。これはキューの考え方です。

どちらも「データを入れる」「データを出す」という動きがありますが、出てくる順番が違います。

アルゴリズムとセットで使われる

データ構造は、アルゴリズムとセットで使われます。

アルゴリズムは、問題を解くための手順です。データ構造は、その手順で使うデータの持ち方です。

たとえば、商品を安い順に並べるソートでは、商品データを配列に入れて処理することがあります。

フォルダの中からファイルを探す処理では、木構造の考え方が関係します。

つまり、データ構造は「処理しやすくするための土台」です。

アルゴリズム全体の考え方を確認したい方は、基本情報技術者試験のアルゴリズム入門も参考になります。

かんたんに言うと、データ構造はデータの入れ物の形

データ構造は同じデータでも持ち方によって使いやすさが変わることを示した図

データ構造は、データを入れる「入れ物の形」と考えると分かりやすいです。

同じものを入れる場合でも、箱に入れるのか、棚に並べるのか、列に並べるのかで、取り出しやすさが変わります。

プログラムでも同じです。

データをどう持つかによって、探しやすさ、追加しやすさ、取り出しやすさが変わります。

同じデータでも持ち方で扱いやすさが変わる

たとえば、次の3つのページを見たとします。

トップページ
商品ページ
注文ページ

これを「見た順番」に並べておけば、一覧として見やすいです。

しかし、ブラウザの戻るボタンでは、最後に見た「注文ページ」から戻ります。この場合は、最後に入れたものを先に出すスタックの考え方が合います。

同じページ名でも、使い方によって向いている持ち方が変わります。

順番に見るなら配列が分かりやすい

配列は、データを順番に並べて持つ形です。

点数一覧、商品一覧、予約一覧、検索結果一覧など、順番に見たいデータに向いています。

たとえば、1番目から順番に点数を見て、合計を出す処理では、配列とループを組み合わせると分かりやすくなります。

後から入れたものを先に出すならスタックが合う

スタックは、後から入れたものを先に出す形です。

本を上に積むと、最後に置いた本が一番上にあります。そのため、最後に置いた本を先に取ることになります。

この考え方は、ブラウザの戻る、操作の取り消しなどで使われます。

先に入ったものを先に出すならキューが合う

キューは、先に入ったものを先に出す形です。

レジ待ちの列では、先に並んだ人が先に会計します。印刷待ちでも、先に送られた印刷データから処理されることが多いです。

このような順番待ちには、キューの考え方が合います。

データ構造は身近で何に使われる?

データ構造は、試験のためだけの知識ではありません。

パソコン、スマホ、Webサービス、業務システムなど、いろいろな場所で使われています。

データ構造を知ると、身近な処理の裏側が少し見えるようになります。

配列は商品一覧や点数一覧で使われる

配列は、一覧データと相性がよいです。

たとえば、ネットショップの商品一覧、テストの点数一覧、予約者の一覧、検索結果の一覧などです。

これらは、1番目、2番目、3番目のように順番に見ることができます。

基本情報技術者試験でも、配列に入った値をループで順番に見る問題がよく出ます。

スタックはブラウザの戻るや取り消しで使われる

スタックは、最後に入ったものを先に出したいときに使います。

ブラウザでページを見ていると、戻るボタンで1つ前のページに戻れます。

これは、見たページを積み上げておき、最後に見たページから取り出す考え方に近いです。

文章作成ソフトの「元に戻す」も、直前の操作から取り消すので、スタックの考え方に近いです。

キューは印刷待ちや問い合わせ対応で使われる

キューは、先に入ったものから順番に処理したいときに使います。

たとえば、プリンターに複数の印刷を送ると、先に送ったものから順番に印刷されます。

問い合わせ対応でも、先に来た問い合わせから順番に対応する考え方があります。

レジ待ちの列も、キューのイメージに近いです。

木構造はフォルダやカテゴリで使われる

木構造は、親子関係でデータを持つ形です。

パソコンのフォルダは、フォルダの中に別のフォルダやファイルがあります。

Webサイトのカテゴリも、大きなカテゴリの中に小さなカテゴリがあることがあります。

このような階層を表すときに、木構造の考え方が使われます。

配列とは?

配列がデータを順番に並べて持つ構造であることを示した図

配列とは、データを順番に並べて持つデータ構造です。

初心者が最初に覚えたいデータ構造の1つです。

配列は、値を順番に見る、合計する、探す、並べ替えるなど、多くの処理の土台になります。

データを順番に並べる

配列では、データを横に並べるように考えます。

点数
1番目:80
2番目:65
3番目:90
4番目:72

このように、何番目にどの値が入っているかを意識します。

本文や教材画面では、初心者が見て分かりやすいように「1番目、2番目、3番目」と表示するのが自然です。

添字で場所を指定する

配列の番号が見た目では1番目からでもプログラム内部では0から始まる場合があることを示した図

配列では、データの場所を番号で指定します。この番号を添字といいます。

添字とは、配列の中の「場所を表す番号」です。

ただし、ここで注意が必要です。

プログラムの種類や問題文によって、配列の番号が「0から始まる場合」と「1から始まる場合」があります。

JavaScriptでは、内部的に配列を0から数えることが多いです。しかし、初心者向けの教材画面では、1番目、2番目、3番目のように表示すると分かりやすくなります。

基本情報技術者試験では、問題文に配列番号の前提が書かれていることがあります。必ず、配列が何番から始まるかを確認しましょう。

ループと組み合わせやすい

配列は、ループと組み合わせると便利です。

ループとは、同じ処理をくり返すことです。

たとえば、点数の配列を1番目から順番に見て、合計を出すことができます。

合計 ← 0
1番目の点数を見る
合計 ← 合計 + 1番目の点数
2番目の点数を見る
合計 ← 合計 + 2番目の点数

ここで使っている「←」は、右側の結果を左側の変数に入れるという意味です。

たとえば、「合計 ← 合計 + 点数」は、今の合計に点数を足して、その結果を新しい合計として入れるという意味です。

探索やソートの土台になる

配列は、探索やソートの土台になります。

配列とくり返し処理の基本を確認したい方は、基本情報技術者試験の配列とループ入門も参考にしてください。

探索とは、目的のデータを探すことです。ソートとは、データを決まった順番に並べ替えることです。

たとえば、点数の配列から90点を探したり、点数を高い順に並べ替えたりします。

そのため、配列の何番目を見ているのか、今の値はいくつかを追うことが大切です。

リストとは?

リストがデータ同士を矢印でつないで管理する構造であることを示した図

リストとは、データ同士をつなげて管理するデータ構造です。

配列は、データが順番に並んでいるイメージです。一方、リストは、データが「次のデータへのつながり」を持っているイメージです。

リストは、途中にデータを追加したり、途中のデータを削除したりする考え方を理解するときに役立ちます。

データ同士をつなげて管理する

リストでは、1つのデータが次のデータへのつながりを持ちます。

A → B → C

この場合、Aの次はB、Bの次はCというつながりがあります。

配列のように「何番目」という場所を中心に考えるよりも、「次にどのデータへ進むか」を中心に考えます。

次のデータへのつながりを持つ

リストでは、データ本体と、次のデータを示す情報をセットで考えます。

たとえば、Aというデータが「次はB」と覚えているようなイメージです。

そのため、先頭から順番につながりをたどることで、次のデータへ進めます。

基本情報技術者試験では、リストの構造そのものを深く作る問題よりも、配列やリストの特徴を問う形で出ることがあります。

途中への追加や削除を考えやすい

たとえば、A → B → C の間に X を入れたいとします。

変更前のつながり:A → B → C
Xを追加した後のつながり:A → X → B → C

このとき、リストでは、データの置き場所そのものをきれいに並び替えるというより、次につながる相手を変えると考えます。

Aの次 ← X
Xの次 ← B

つまり、Aの次をBからXへ変え、Xの次をBにします。

教材では、A、B、C、Xの置き場所と、A → X → B → C というつながりの違いを見られるようにしています。

「今、どのつながりを変えたのか」「どのデータが次につながったのか」を見ることが大切です。

配列との違いを理解する

配列とリストは、どちらも複数のデータを扱います。

しかし、考え方は同じではありません。

配列は、何番目に何があるかを見やすい形です。リストは、データ同士のつながりを見やすい形です。

初心者は、配列とリストを「どちらも一覧だから同じ」と考えがちです。

試験では、名前だけで判断せず、何をしやすい形なのかを見ることが大切です。

スタックとは?

スタックが上から入れて上から出す構造でありpushとpopの動きを示した図

スタックとは、後から入れたものを先に出すデータ構造です。

縦の筒や、積み上げた本をイメージすると分かりやすいです。

上から入れて、上から出します。

そのため、最後に入れたデータが最初に出てきます。

後から入れたものを先に出す

スタックでは、データを上に積みます。

下:A
上:B

この状態で取り出すと、先に出るのはBです。

Aの方が先に入っていますが、Bが上にあるため、Bから取り出します。

この「後から入れたものを先に出す」という順番が、スタックの一番大切な点です。

LIFOの考え方

スタックの動きは、LIFOと呼ばれます。

LIFOは「Last In, First Out」の略です。

日本語では「最後に入ったものが、最初に出る」という意味です。

英語を丸暗記するよりも、積み上げた本のイメージで覚えると分かりやすいです。

pushで入れる

スタックにデータを入れる操作を、pushといいます。

pushは、スタックの上にデータを積む操作です。

push A
push B
push C

この順番で入れると、下からA、B、Cの順に積まれます。

一番上にあるのは、最後にpushしたCです。

popで取り出す

スタックからデータを取り出す操作を、popといいます。

popは、一番上のデータを取り出す操作です。

push A
push B
push C
pop

この場合、popで取り出されるのはCです。

次にpopするとB、その次にpopするとAが取り出されます。

基本情報技術者試験では、pushとpopを順番に追い、最後に何が残るか、何が取り出されるかを問われることがあります。

ブラウザの戻るや取り消しに近い

スタックは、ブラウザの戻るや操作の取り消しに近い考え方です。

たとえば、次の順番でページを見たとします。

トップページ
商品ページ
注文ページ

戻るボタンを押すと、直前に見ていた商品ページに戻ります。

最後に見たページから戻るため、スタックの考え方に近いです。

文章作成ソフトで操作を取り消すときも、直前の操作から順番に戻すことが多いです。

キューとは?

キューが後ろに入って前から出る構造でありenqueueとdequeueの動きを示した図

キューとは、先に入ったものを先に出すデータ構造です。

横の列をイメージすると分かりやすいです。

レジ待ちの列では、先に並んだ人が先に会計します。これがキューの考え方です。

先に入ったものを先に出す

キューでは、データが列に並びます。

先頭:A → B → C:最後尾

この状態で取り出すと、先に出るのはAです。

Aが先に入っているため、Aから処理されます。

スタックと違い、最後に入ったCが先に出るわけではありません。

FIFOの考え方

キューの動きは、FIFOと呼ばれます。

FIFOは「First In, First Out」の略です。

日本語では「最初に入ったものが、最初に出る」という意味です。

レジ待ち、印刷待ち、問い合わせ対応のように、順番を守って処理したい場面に合います。

enqueueで入れる

キューにデータを入れる操作を、enqueueといいます。

enqueueは、列の最後にデータを追加する操作です。

enqueue A
enqueue B
enqueue C

この順番で入れると、A、B、Cの順に列に並びます。

先頭にいるのはAです。

dequeueで取り出す

キューからデータを取り出す操作を、dequeueといいます。

dequeueは、列の先頭からデータを取り出す操作です。

enqueue A
enqueue B
enqueue C
dequeue

この場合、dequeueで取り出されるのはAです。

次にdequeueするとB、その次にdequeueするとCが取り出されます。

基本情報技術者試験では、enqueueとdequeueを順番に追い、どのデータが取り出されるかを問われることがあります。

印刷待ちやレジ待ちに近い

キューは、印刷待ちやレジ待ちに近いです。

プリンターにAさん、Bさん、Cさんの順で印刷を送ったとします。

ふつうは、Aさんの印刷から始まり、次にBさん、次にCさんと処理されます。

このように、先に来たものを先に処理する場面では、キューの考え方が使われます。

スタートボタンでデータ構造の動きを見る

データ構造は、文章だけで読むよりも、実際に動きを見た方が分かりやすいです。

下の教材では、配列、リスト、スタック、キューの動きを1ステップずつ確認できます。

スタートボタンを押したあと、次へボタンで1つずつ進めてください。今見ている値、変わったつながり、追加された値、取り出された値に注目しましょう。

動く教材

スタートボタンでデータ構造の動きを見る

配列・リスト・スタック・キューの違いを、1ステップずつ見て確認できます。今見ている値、変わったつながり、追加された値、取り出された値に注目しましょう。

配列:何番目に何が入っているかを見る

順番に並べて持つ

今見るところ

スタートを押すと、1番目から順番に見ます。

トレースで追うこと

    疑似言語の読み方

    合計 ← 0
    点数を1番目から順に見る
    合計 ← 合計 + 今見ている点数

    注意:画面では「1番目、2番目」と表示しています。問題文やプログラムでは、内部の番号が0から始まる場合があります。

    リスト:データ同士をつなげて持つ

    途中の追加を考えやすい

    今見るところ

    スタートを押すと、A → B → C のつながりを作ります。

    トレースで追うこと

      疑似言語の読み方

      Aの次 ← B
      Bの次 ← C
      Xを用意する
      Aの次 ← X
      Xの次 ← B

      リストでは「置いてある場所」よりも、「次にどのデータへつながるか」を見ます。追加するときは、矢印の向きを変える点に注目します。

      スタック:上から入れて上から出す

      後から入れたものを先に出す

      push=入れるpop=取り出す上(トップ)から出る

      今見るところ

      スタートを押すと、A、B、Cの順にpushします。

      トレースで追うこと

        疑似言語の読み方

        push A
        push B
        push C
        取り出した値 ← pop

        スタックは縦の筒のイメージです。最後に入れたCが、一番上にあるため先に出ます。

        キュー:後ろに入って前から出る

        先に入ったものを先に出す

        取り出した値:まだなし
        先頭(フロント)末尾(バック)

        今見るところ

        スタートを押すと、A、B、Cの順にenqueueします。

        トレースで追うこと

          疑似言語の読み方

          enqueue A
          enqueue B
          enqueue C
          取り出した値 ← dequeue

          キューは横の列のイメージです。先に入ったAが、先頭にあるため先に出ます。取り出した値は、上の固定枠に残して確認できます。

          大切なのは、次の4つです。

          • 今どのデータを見ているか
          • どのつながりが変わったか
          • どのデータが追加されたか
          • どのデータが取り出されたか

          配列の値を順番に見る

          配列の教材では、1番目、2番目、3番目、4番目の値を順番に見る動きを確認します。

          1番目:80
          2番目:65
          3番目:90
          4番目:72

          教材画面では、今見ている配列の位置が強調されます。

          たとえば、2番目を見ているときは、2番目の箱が目立ちます。

          ここで見るべき点は、「何番目を見ているか」「その値はいくつか」「合計がどう変わるか」です。

          配列の番号ずれにも注意します。教材画面では1番目から表示していても、内部番号は0から表示されています。

          基本情報技術者試験では、問題文に書かれた配列番号の前提を必ず確認しましょう。

          リストのつながりを変える

          リストの教材では、データの置き場所と、データ同士のつながりを分けて確認します。

          置き場所:A | B | C | X
          つながり:A → X → B → C

          リストでは、データがきれいに横へ並び替わるとは限りません。

          大切なのは、どのデータの次に、どのデータがつながっているかです。

          教材では、Xを追加したあと、Aの次がXになり、Xの次がBになる流れを確認します。

          ここで見るべき点は、「置き場所」ではなく「つながりがどう変わったか」です。

          スタックにpushしてpopする

          スタックの教材では、pushで上に積み、popで上から取り出す動きを見ます。

          push A
          push B
          push C
          pop

          この場合、popで出てくるのはCです。

          教材画面では、A、B、Cが縦に積まれ、Cが一番上にあることを見せます。

          次へボタンを押すたびに、どの値が上に積まれたか、どの値が上から取り出されたかを確認します。

          ここで見るべき点は、「最後に入ったものが先に出る」という流れです。

          キューにenqueueしてdequeueする

          キューの教材では、enqueueで列の最後に入り、dequeueで列の先頭から取り出す動きを見ます。

          enqueue A
          enqueue B
          enqueue C
          dequeue

          この場合、dequeueで出てくるのはAです。

          教材画面では、A、B、Cが横の列に並び、取り出された値は上の固定枠に表示されます。

          次へボタンを押すたびに、どの値が列に追加されたか、どの値が先頭から出たかを確認します。

          ここで見るべき点は、「先に入ったものが先に出る」という流れです。

          出てくる順番の違いを見る

          スタックとキューで同じ順番に入れても出る順番が違うことを比較した図

          スタックとキューは、入れる順番が同じでも、出てくる順番が違います。

          たとえば、A、B、Cの順に入れた場合を比べます。

          スタックで取り出す順番:C → B → A
          キューで取り出す順番:A → B → C

          同じデータでも、持ち方が違うと、結果が変わります。

          この違いを手で追えるようになると、基本情報技術者試験の問題も読みやすくなります。

          木構造とは?

          木構造が親子関係と階層でデータを管理することをフォルダの例で示した図

          木構造とは、親子関係でデータを管理するデータ構造です。

          木の幹から枝が分かれるように、1つのデータから複数のデータにつながる形を表します。

          最初から深く覚える必要はありません。まずは、階層を表す形だと理解しましょう。

          親子関係でデータを管理する

          木構造では、上のデータを親、下につながるデータを子として考えます。

          会社
          ├ 営業部
          └ 開発部

          この場合、「会社」が親で、「営業部」と「開発部」が子です。

          さらに、開発部の下にチームを置くこともできます。

          フォルダの階層に近い

          木構造は、パソコンのフォルダに近いです。

          写真
          ├ 旅行
          ├ 家族
          └ 仕事

          大きなフォルダの中に、小さなフォルダがあります。

          このように、上から下へたどっていく形が木構造です。

          カテゴリや組織図でも使われる

          木構造は、Webサイトのカテゴリや会社の組織図でも使われます。

          たとえば、Webサイトでは「IT用語」という大きなカテゴリの中に、「ネットワーク」「セキュリティ」「パソコン」などの小さなカテゴリを置くことがあります。

          会社では、社長、部長、課長、担当者のように階層があります。

          このような親子関係を表すときに、木構造の考え方が役立ちます。

          探索と関係することがある

          木構造は、探索と関係することがあります。

          データの中から目的の値を探す考え方は、基本情報技術者試験の探索アルゴリズム入門も参考になります。

          探索とは、目的のデータを探すことです。

          フォルダの中からファイルを探すときは、上の階層から下の階層へ進みます。

          基本情報技術者試験では、木構造の深い理論よりも、親子関係や階層の考え方を問われることがあります。

          グラフとは?

          グラフが点と線でつながりを表すデータ構造であることを駅や路線図の例で示した図

          グラフとは、点と線でデータのつながりを表すデータ構造です。

          ここでいうグラフは、棒グラフや円グラフのことではありません。

          点と点が線でつながった「関係の図」と考えると分かりやすいです。

          点と線でつながりを表す

          グラフでは、点と線を使います。

          点は場所や人、線はつながりを表します。

          A駅 ─ B駅 ─ C駅

          この場合、A駅とB駅、B駅とC駅がつながっていると考えます。

          地図や路線図に近い

          グラフは、地図や路線図に近いです。

          駅と駅のつながり、道路と交差点のつながりなどを表せます。

          目的地までの道を探す処理では、グラフの考え方が関係します。

          SNSのつながりにも使われる

          グラフは、SNSのつながりにも使われます。

          人を点、友だち関係を線として考えると、誰と誰がつながっているかを表せます。

          たとえば、AさんとBさんが友だち、BさんとCさんが友だち、という関係を図にできます。

          経路探索の考え方につながる

          グラフは、経路探索の考え方につながります。

          経路探索とは、出発点から目的地までの道を探すことです。

          カーナビ、乗換案内、配送ルートなどで使われる考え方です。

          最初から難しいアルゴリズムまで覚える必要はありません。まずは、点と線でつながりを表す形だと理解しましょう。

          データ構造の向き不向き

          配列・スタック・キュー・木構造・グラフがそれぞれどの場面に向いているかを整理した図

          データ構造には、それぞれ向き不向きがあります。

          どれがいつでも一番よい、というものではありません。

          大切なのは、何をしたいのかに合わせて、データの持ち方を選ぶことです。

          順番に見るなら配列が分かりやすい

          順番にデータを見るなら、配列が分かりやすいです。

          1番目から最後まで順番に確認できます。

          点数を合計する、商品一覧を表示する、検索結果を上から見る、といった処理に向いています。

          最後に入れたものを先に使うならスタック

          最後に入れたものを先に使うなら、スタックが向いています。

          ブラウザの戻る、操作の取り消し、直前の処理を戻すような場面に合います。

          合言葉は、「後から入れたものが先に出る」です。

          順番待ちを扱うならキュー

          順番待ちを扱うなら、キューが向いています。

          印刷待ち、問い合わせ対応、レジ待ちのように、先に来たものから処理する場面に合います。

          合言葉は、「先に入ったものが先に出る」です。

          階層を扱うなら木構造

          階層を扱うなら、木構造が向いています。

          フォルダ、カテゴリ、会社組織のように、親子関係で整理したいときに使いやすい形です。

          上から下へたどるイメージを持つと分かりやすいです。

          つながりを扱うならグラフ

          つながりを扱うなら、グラフが向いています。

          地図、路線図、SNSのつながりのように、点と点の関係を表すときに使います。

          「どことどこがつながっているか」を考える形です。

          基本情報技術者試験ではどう出る?

          基本情報技術者試験では、データ構造は知識問題だけでなく、処理を追う問題でも出ます。

          特に、スタックとキューは、出し入れの順番を問われやすいです。

          問題を解くときは、頭の中だけで考えず、紙に状態を書いて追うのがおすすめです。

          処理を1行ずつ追う練習は、基本情報技術者試験の疑似言語とトレース入門も参考にしてください。

          スタックとキューの違いを問う問題

          スタックとキューの違いを問う問題では、出てくる順番を見ます。

          スタックは、後から入れたものが先に出ます。

          キューは、先に入ったものが先に出ます。

          この2つを逆に覚えると、答えが大きく変わります。

          pushとpopの結果を問う問題

          スタックでは、pushとpopの結果を問われることがあります。

          たとえば、次のような流れです。

          push A
          push B
          pop
          push C
          pop

          このとき、1回目のpopではBが出ます。2回目のpopではCが出ます。

          スタックの状態を1行ずつ書くと、間違いにくくなります。

          enqueueとdequeueの結果を問う問題

          キューでは、enqueueとdequeueの結果を問われることがあります。

          たとえば、次のような流れです。

          enqueue A
          enqueue B
          dequeue
          enqueue C
          dequeue

          このとき、1回目のdequeueではAが出ます。2回目のdequeueではBが出ます。

          キューは、列の先頭から出ることを意識しましょう。

          配列やリストの特徴を問う問題

          配列やリストでは、それぞれの特徴を問われることがあります。

          配列は、順番に並んだデータを扱いやすい形です。

          リストは、データ同士のつながりを持つ形です。

          配列は「何番目を見るか」、リストは「次にどこへつながるか」を意識すると違いが見えます。

          木構造やグラフの考え方を問う問題

          木構造やグラフでは、形の意味を問われることがあります。

          木構造は、親子関係や階層を表します。

          グラフは、点と線でつながりを表します。

          難しい言葉だけで覚えるより、フォルダ、カテゴリ、路線図、SNSのつながりに置き換えると理解しやすくなります。

          初心者が間違えやすい点

          データ構造は、名前が似ていたり、英語の操作名が出てきたりするため、最初は混乱しやすいです。

          ただし、1つずつ動きを見れば大丈夫です。

          ここでは、特に間違えやすい点を整理します。

          スタックとキューを逆に覚える

          初心者が特に間違えやすいのは、スタックとキューを逆に覚えることです。

          スタックは、縦の筒です。上から入れて、上から出します。

          キューは、横の列です。後ろに並んで、前から出ます。

          この形の違いをイメージすると、スタックとキューを区別しやすくなります。

          pushとpopを混同する

          pushとpopを混同することもよくあります。

          pushは入れる操作です。

          popは取り出す操作です。

          スタックでは、pushで上に積み、popで上から取り出します。

          どちらもスタックで使う言葉なので、操作の向きを必ず確認しましょう。

          enqueueとdequeueを混同する

          enqueueとdequeueも混同しやすい言葉です。

          enqueueは、キューに入れる操作です。

          dequeueは、キューから取り出す操作です。

          キューでは、enqueueで列の最後に入り、dequeueで列の先頭から出ます。

          英語のつづりよりも、動きを見て覚えるのがおすすめです。

          配列とリストを同じものとして考える

          配列とリストは、どちらも複数のデータを扱います。

          そのため、初心者は同じものとして考えがちです。

          しかし、配列は「何番目に何があるか」を見やすい形です。

          リストは「次にどのデータへつながるか」を見やすい形です。

          同じ一覧に見えても、持ち方の考え方が違います。

          また、配列では番号ずれにも注意が必要です。教材画面では1番目から表示していても、問題文やプログラムでは0番目から始まる場合があります。

          基本情報技術者試験では、配列の添字が何番から始まるかを必ず確認しましょう。

          確認問題

          最後に、データ構造の基本を確認しましょう。

          答えをすぐに見るのではなく、頭の中でデータの動きをイメージしてから確認すると、理解が深まりやすくなります。

          スタックは先に入れたものと後に入れたもののどちらを先に出しますか?

          スタックは、後に入れたものを先に出します。

          たとえば、A、B、Cの順にpushした場合、最初にpopで出るのはCです。

          スタックは、上から入れて上から出す縦の筒のイメージです。

          キューはどのような場面に向いていますか?

          キューは、先に入ったものから順番に処理したい場面に向いています。

          たとえば、印刷待ち、問い合わせ対応、レジ待ちなどです。

          A、B、Cの順にenqueueした場合、最初にdequeueで出るのはAです。

          木構造は身近な何に似ていますか?

          木構造は、フォルダの階層やカテゴリ、会社の組織図に似ています。

          大きなまとまりの下に、小さなまとまりがある形です。

          親子関係でデータを整理したいときに使われます。

          まとめ

          データ構造とは、データの持ち方のことです。

          同じデータでも、配列で持つのか、リストで持つのか、スタックで持つのか、キューで持つのかによって、扱いやすさが変わります。

          配列は、データを順番に並べる形です。点数一覧、商品一覧、検索結果一覧のように、順番に見たいデータに向いています。

          リストは、データ同士をつなげて管理する形です。次のデータへのつながりを持つ点が特徴です。

          スタックは、後から入れたものを先に出す形です。ブラウザの戻るや操作の取り消しに近い考え方です。

          キューは、先に入ったものを先に出す形です。印刷待ち、問い合わせ対応、レジ待ちに近い考え方です。

          木構造は、親子関係や階層を表す形です。フォルダやカテゴリに似ています。

          グラフは、点と線でつながりを表す形です。地図、路線図、SNSのつながりに似ています。

          基本情報技術者試験では、名前を覚えるだけでなく、データがどの順番で入り、どの順番で出るかを追う力が必要です。

          特に、push、pop、enqueue、dequeueの動きは、手で1ステップずつ追うと理解しやすくなります。

          データ構造は暗記するものではなく、データの動きを見るための考え方です。

          まずは、配列は横に並べる、スタックは縦に積む、キューは横に並ぶ、というイメージから始めましょう。

          よかったらシェアしてね!
          • URLをコピーしました!
          目次