【Day17】「配列」と「リスト」の基本をおさえよう!

投稿者: | 2025年7月25日

こんにちは。今日は、プログラミングやデータ構造でよく登場する「配列とリスト」について学びました!


📦 配列(Array)とは?

■ 配列ってなに?

同じ型のデータを、ひとまとめにして順番に並べたものです。
例えば、5人分のテスト点数(整数)を記録する場合に便利!

int scores[5] = {80, 90, 75, 60, 85};
  • 添字(インデックス)を使ってアクセス:scores[0] は 80、scores[4] は 85
  • 配列の要素数は固定(最初にサイズを決める)

■ 配列の特徴

特徴説明
サイズ固定宣言時に決めたサイズしか使えない
同じ型すべて同じデータ型(int, char など)
アクセス高速インデックスで一発アクセス可能

🔁 リスト(List)とは?

■ リストってなに?

配列と似ているけど、柔軟な構造を持ったデータの集まり。特に「連結リスト(Linked List)」という構造が有名です。

  • 各要素が「データ本体+次の要素へのポインタ」で構成される
  • 要素の追加・削除が簡単(メモリを動かさない)

■ 単方向リストの図(イメージ)

[10 | →] → [20 | →] → [30 | NULL]

このように、各要素が次の要素を「指している(リンク)」ので「連結リスト」と呼ばれます。

■ 配列とリストの違いまとめ

比較項目配列(Array)リスト(List)
要素数固定可変(自由に増減可能)
挿入・削除難しい(位置がズレる)簡単(リンクの張り替え)
アクセス速度速い(ランダムアクセス可)遅い(順にたどる必要あり)
メモリ配置連続非連続(ポインタで管理)

💡 基本情報技術者試験での過去問(配列・リスト)

📘 過去問例①(令和元年度秋 午前)

問題:
次のC言語のプログラムに関する記述のうち、正しいものはどれか。

int a[5] = {1, 2, 3, 4, 5};
printf("%d", a[2]);

選択肢:
ア. 1が表示される
イ. 2が表示される
ウ. 3が表示される
エ. 5が表示される

👉 正解:ウ(3が表示される)

a[2]は、3番目の要素なので、値は3です(0から数える!)


📘 過去問例②(平成30年度 春 午前)

問題:
単方向リストにおいて、リストの先頭から4番目の要素を削除する操作に関する記述として、最も適切なものはどれか。

選択肢:
ア. 削除した要素の前のポインタを次の要素に向け直せばよい
イ. 削除した要素の後のポインタを前の要素に向け直せばよい
ウ. 削除した要素以外はすべて書き換える必要がある
エ. 単方向リストでは要素の削除はできない

👉 正解:ア

→ 単方向リストでは、前のノードが「次のノード」を覚えているので、**「前のノードのポインタをスキップさせる」**ことで削除できます。


✍️ ちょっと練習問題!

  1. int a[4] = {1, 3, 5, 7};a[3] の値は?
     → 答え:
  2. 単方向リストで、2番目の要素を削除したいとき、変更が必要なポインタはどれ?

✅ 答え:

  1. a[3] = 7(0, 1, 2, 3番目)
  2. 1番目のノードのポインタ」を、3番目のノードに向ければOK!

📝 今日のまとめ

  • 配列:同じ型のデータを並べた固定サイズの構造。アクセス高速!
  • リスト:柔軟な追加・削除が可能な構造。ポインタでつなぐ!
  • 試験では、インデックスやポインタ操作に関する問題がよく出る!