データ構造(配列・リスト・木構造)とは?わかりやすく解説

テクノロジ系 ・ アルゴリズムとプログラミング ・ 読む目安8分

番号で直接読める配列、つなぎ替えで挿入できるリスト、階層を表す木構造の違いを学びます。

最初に考えてみよう

名簿の途中に1人追加するとき、全員の番号を1つずつずらすのは大変です。一方で「5番目の人」をすぐ探せないのも不便です。データの並べ方によって、何が得意で何が苦手になるのでしょうか?

解説

データの並べ方で、得意な操作が変わります。配列は「番号ですぐ読める」、リストは「つなぎ替えで入れやすい」、木構造は「階層を表せる」のが持ち味です。

1配列 = 番号付きのロッカー

データが連続して並び、1つずつに添字(要素番号)が付いています。番号を押してみよう。

下の番号(添字)を押すと、その箱がすぐ開きます。

※ 添字を1から数えるか0から数えるかは決まりごとです。擬似言語の問題では問題文の指示に従います。

23番目に「新」を入れると?

同じ「途中に1つ入れる」でも、配列とリストでは手間がまったく違います。

A[1]
B[2]
C[3]
D[4]
E[5]
F[6]
[7]
このままでは3番目に空きがない

3木構造 = 根から枝分かれ

パソコンのフォルダがそのまま木構造です。木を逆さまにした形で、根が一番上にきます。

ルート書類写真企画.txt見積.xlsx旅行.jpg親子
根(ルート)節(ノード)葉(リーフ)
  • 根:親をもたない一番上(ルートディレクトリ)
  • 節:親と子の両方をもつ途中の要素(フォルダ)
  • 葉:子をもたない末端の要素(ファイル)
どの節も子が最大2つまでの木を2分木と呼びます。この図も、どの節の子も2つ以下なので2分木です。

4試験ではここを見分ける

  • 配列=添字(要素番号)で直接読み書き。途中に入れると後ろをずらす
  • リスト=ポインタで次をたどる。挿入・削除はポインタの付け替えだけ。n番目は先頭からたどる
  • 木構造=根(一番上)・節(途中)・葉(末端)。子が最大2つなら2分木
よくある取り違え

誤り:リストも添字でn番目を直接読める

正しくは:リストは先頭からポインタを順にたどる。直接読めるのは配列

誤り:配列の途中への挿入は1か所の書き換えで済む

正しくは:挿入位置より後ろの要素を1つずつずらす必要がある

試験のポイント

ITパスポート試験での問われ方

配列とリストの得意・不得意(読み出しと挿入)、ポインタの付け替え、木構造の根・節・葉が問われる。擬似言語の問題では配列の読み方が前提になる

間違えやすいポイント

  • リストも添字で直接n番目を読めると思う
  • 配列の途中への挿入が、1か所の書き換えだけで済むと思う
  • 木構造の「根」を一番下の要素だと思う

関連用語

配列、添字(要素番号)、リスト、ポインタ、双方向リスト、木構造、根・節・葉、2分木

図解の内容を文章で読む

データ構造(配列・リスト・木構造)をイメージでつかむ

配列はデータを連続して並べ、何番目かを表す番号(添字)を指定して直接読み書きします。リストは各データが次のデータの位置(ポインタ)をもってつながり、途中への挿入や削除はポインタの付け替えだけで済みます。木構造は根から枝分かれして階層を表す構造で、子が最大2つの木を2分木と呼びます。

たとえると:配列は番号の付いたロッカー(5番をすぐ開けられる)、リストは「次はあの人」と指名していく伝言ゲームの列、木構造は家系図やパソコンのフォルダです。

配列は、同じ種類のデータを連続した領域に並べ、何番目かを表す番号(添字、要素番号)を指定して目的の要素を直接読み書きするデータ構造です。表計算のセルや、擬似言語の問題で使う変数の並びがこれに当たります(何番から数えるかは問題文の指示に従います)。途中に新しいデータを挿入したり削除したりするときは、後ろの要素を1つずつずらす必要があります。リスト(連結リスト)は、各要素がデータと「次の要素の位置」を表すポインタをもち、ポインタでつながったデータ構造です。途中への挿入や削除は、前後の要素のポインタを付け替えるだけで済みますが、n番目の要素を読むときは先頭から順にポインタをたどる必要があります。次の要素だけを指す単方向リストのほか、前の要素も指す双方向リストがあります。木構造は、1つの根(ルート)から枝分かれして階層を表すデータ構造で、途中の要素を節(ノード)、子をもたない末端の要素を葉(リーフ)と呼びます。上下の関係は親と子で表し、どの節も子を最大2つまでしかもたない木を2分木と呼びます。フォルダの構成や組織図が身近な例です。

押さえどころ

  • 配列=添字で直接読み書きできる。途中に挿入すると後ろの要素をずらす必要がある
  • リスト=ポインタでつながる。挿入・削除はポインタの付け替えだけ、読むときは先頭からたどる
  • 木構造=根・節・葉で階層を表す。子が最大2つなら2分木

確認問題(8問)

確認問題を読み込んでいます...

確認問題は本サービスのオリジナル問題です。ログインなしで解けます(結果は保存されません)。

「データ構造(配列・リスト・木構造)」に関連する過去問(2問)

このテーマが主題の問題はまだありませんが、関連する用語が問題文や選択肢に出てくる公開問題を集めました。

つながるテーマ

この解説をXでシェア

学習を記録して、合格まで続ける

教材と確認問題はこのページで全部無料で使えます。登録すると「データ構造(配列・リスト・木構造)」の結果や習熟度が記録され、苦手分野の復習提案、試験日までの学習計画、合格準備度の見える化が使えます。最初の7日間は学習記録も無料です。