Developer

【基本情報技術者試験】データ構造2 ~配列~
2022.11.29
Lv1

【基本情報技術者試験】データ構造2 ~配列~

今回は【基礎理論(アルゴリズム)編】配列について紹介します。
試験では1次元配列だけでなく2次元配列についても問われますので、どちらもよく学習しておきましょう。


配列について

配列は、“同じ種類のデータ”を“番号を割り振った区画”に格納しておくことで操作を効率化しているデータ構造になります。

ここでいう“種類”とは、整数や実数、文字といった各種のデータ形式のことを表しています。
また、配列において、“各区画の番号”のことをインデックス(添え字)と呼ぶことを必ず覚えておきましょう。

まずはここまでの内容をイラストにまとめてみました。

上のイラストのようにデータを管理しておけば、インデックスの番号を指定するだけで特定のデータにアクセスできるようになりますね!

 

さて、実際に出題される問題を解くためには、配列の表記方法を知らなければなりません。
配列の要素(それぞれのデータ)は、配列名とインデックスの番号を用いて次のように表されます。
(インデックス番号の指定には()や[]などの複数の表現方法があるので注意しましょう)

試験では、上記のような表記方法が前提知識として扱われることも多いので、必ず押さえておきましょう。

 

ここまでのお話で、配列についてある程度理解することができましたでしょうか?
しかしながら、上記の内容は全て“1次元配列”と呼ばれる配列についてのお話でした。
実際には、多次元配列と呼ばれる配列も存在しているのです。
その中でも最も利用される例として、今回は二次元配列というものをご紹介したいと思います。

 

2次元配列について

二次元配列とは、その名の通り二次元でデータを管理することができる配列のことを指します。
二次元配列では、“行”と“列”を示す2つのインデックス番号を各区画に割り振ってデータを管理しているため、
イメージとしてはExcelなどの表計算ソフトとよく似ています。

まずは、配列の各要素の指定方法を含め、2次元配列の概要を次のイラストで確認しておきましょう。

先ほども書いた通り、二次元配列では行と列の2つの番号でデータを管理しています。
そのため、1次元配列の各要素の指定方法(例:a[1])とは異なり、a[0,0]やa(2,0)のように2つの数字を使ってデータを指定しなければならないんですね。

また、上のイラスト中にも出てきたように、配列のインデックス番号は(1次元か2次元かに関わらず)0から始まることもあります。
そのことも覚えておきましょうね!

 

以上で配列の紹介は終わりになります。
1次元配列と2次元配列、どちらが出題されても答えられるように、それぞれのイメージや記述方法をしっかりと身に着けておきましょう。


まとめ

  • 配列はインデックス(添え字)を用いてデータを管理する
  • 配列には1次元配列や2次元配列といった種類がある
  • 配列の各要素は配列名とインデックスを用いて表現される(例:a[3], a(2,4)など)

演習問題

1.配列に関する記述として最も正しいものはどれか?
A.添え字を用いてデータを管理する
B.FIFO形式のデータ構造
C.ポインタを用いてデータを管理する

2.a[0,1]+a[2,1]の計算結果として正しいものはどれか?
(計算に当たっては、上記の2次元配列のイラストを参照してください。)
A.75
B.66
C.83
D.157

答えは次回の記事で確認してください。


前回の演習問題~解答例

1.スタックに関する記述として最も正しいものはどれか?
解答:C
解説:スタックはLIFO(最後に入れたものが最初に出てくる)のデータ構造です

2.キューに関する記述として最も正しいものはどれか?
解答:A
解説:キューにデータを格納する操作をEnqueue、データを取り出す操作をDequeueと呼びます

3.スタックとキューが1つずつ用意されている。
次の操作を行った後に、変数xとyに格納されている値はどれか?
なお、Push(n)とEnqueue(n)は数値nをPush、Enqueueする操作を表し、
Pop()とDequeue()はPopやDequeueの操作を行って得られる数値を表している。
[操作] Push(1)→Push(6)→Enqueue(4)→Enqueue(9)→Dequeue()→Enqueue(Pop())→Push(Dequeue())→Enqueue(4)→x=Dequeue(),y=Pop()

解答:x→C, y→D
解説:
5番目の操作(Dequeue())ではキューから4が取り出される(どこにも格納されない)
6番目の操作(Enqueue(Pop()))ではスタックから6が取り出されてキューに格納される
7番目の操作(Push(Dequeue())ではキューから9が取り出されてスタックに格納される

キューに残っているものの中で最も先に格納されたのは6なので、Dequeueによってxには6が入ります。
スタックに最後に格納されたのは9なので、Popによってyには9が入ります。