共通テスト 情報Ⅰ・4-8

データ構造(リスト・配列・木)の一問一答

共通テスト「情報Ⅰ」の「アルゴリズムとプログラミング」から、データ構造(リスト・配列・木)に関する4択問題を10問。「答えと解説を見る」を開くと、正解とその理由がその場で読めます。会員登録は不要です。

この分野の演習

全10問/解説付き・基本無料

アプリ形式で解く(全800問) アルゴリズムとプログラミングの要点解説を読む
問題

上から順に解いてみてください。答えは各問の下で確認できます。

問14-8・基礎

データ構造「スタック(Stack)」の動作原理を表す言葉はどれか?

  • ①LIFO (Last In First Out)
  • ②FIFO (First In First Out)
  • ③LRU (Least Recently Used)
  • ④ラウンドロビン (Round Robin)
答えと解説を見る
正解 ①LIFO (Last In First Out)
解説
正解は「LIFO (Last In First Out)」。スタックは、最後に入れたデータを最初に取り出す、後入れ先出しの構造です。(情報Ⅰの範囲を少し超えた発展の内容です)

なぜ
スタックは皿を積み重ねるのと同じです。新しい皿は一番上に置き、取るときも一番上から取ります。だから、最後に置いたものが最初に出てきます。データを入れる操作をプッシュ(push)、取り出す操作をポップ(pop)と呼びます。

ひっかけ注意

・「FIFO (First In First Out)」…先入れ先出し。キュー(待ち行列)の動き方で、1、2、3 の順に入れると 1 から取り出す。
・「LRU (Least Recently Used)」…最後に使われてから最も長い時間がたったものを入れ替える方式。A→B→C の順に使い、その後 A を使ったなら、次に追い出すのは B。
・「ラウンドロビン (Round Robin)」…複数の処理に、決めた短い時間(タイムクウォンタム)ずつ順番に CPU を割り当てる方式。データを取り出す順番の原理ではない。
問24-8・標準

図のように、データを列の最後尾に加え、先頭から取り出すデータ構造「キュー(Queue)」の動作原理を表す言葉はどれか?

ABC先頭から取り出す最後尾に入れるA→B→Cの順に入れた
自作の模式図
  • ①LIFO (Last In First Out)
  • ②FIFO (First In First Out)
  • ③LRU (Least Recently Used)
  • ④優先度付きキュー (Priority Queue)
答えと解説を見る
正解 ②FIFO (First In First Out)
解説
正解は「FIFO (First In First Out)」。キューは、最初に入れたデータを最初に取り出す、先入れ先出しの構造です。(情報Ⅰの範囲を少し超えた発展の内容です)

なぜ
図では、A、B、C の順に入れたので、取り出すのも A が最初です。お店のレジの行列と同じで、先に並んだ人から順に会計します。データは列の最後尾に加え、先頭から取り出します。届いた順に処理したいデータの管理に向いています。

ひっかけ注意

・「LIFO (Last In First Out)」…後入れ先出し。スタックの動き方で、1、2、3 の順に入れると 3 から取り出す。
・「LRU (Least Recently Used)」…最後に使われてから最も長い時間がたったものを追い出す入れ替えの方式。A→B→C の順に使い、その後 A を使ったなら、次に追い出すのは B。
・「優先度付きキュー (Priority Queue)」…入れた順ではなく、優先度の最も高いものから取り出す構造。名前にキューとあっても FIFO とは限らず、ヒープを使うと効率よく作れる。
問34-8・標準

配列(リスト)の特徴として、正しい説明はどれか?

  • ①途中への挿入や削除が、連結リストより速い
  • ②要素の個数を、いつでも無制限に増やせる
  • ③添字を指定して、どの要素にもすぐアクセスできる
  • ④取り出すときは、必ず入れた順でなければならない
答えと解説を見る
正解 ③添字を指定して、どの要素にもすぐアクセスできる
解説
正解は「添字を指定して、どの要素にもすぐアクセスできる」。配列は、番号を指定すれば、どの要素にもすぐたどり着けます。

なぜ
配列では、添字(何番目かを表す番号)を指定すると、前から順にたどらなくても、目的の要素を直接読み書きできます。これをランダムアクセスといいます。一方、途中に要素を入れたり消したりすると、後ろの要素を1つずつずらす必要があり、手間がかかります。

ひっかけ注意

・「途中への挿入や削除が、連結リストより速い」…逆。連結リストはつなぎ先(ポインタ)を書き換えるだけで挿入・削除でき、配列は後ろの要素をずらす必要がある。
・「要素の個数を、いつでも無制限に増やせる」…大きさを最初に決める静的配列では、要素数5なら6個目は入らない。途中で大きさを変えられる動的配列でも、メモリの量を超えては増やせない。
・「取り出すときは、必ず入れた順でなければならない」…キュー(先入れ先出し)の性質。配列は Data[3] → Data[0] のように、添字で好きな順に読み書きできる。
問44-8・基礎

データと「次のデータへのポインタ(参照)」をセットにして数珠つなぎにしたデータ構造はどれか?

  • ①配列
  • ②スタック
  • ③ハッシュテーブル
  • ④連結リスト
答えと解説を見る
正解 ④連結リスト
解説
正解は「連結リスト」(英語で Linked List)。データと、次のデータの場所(ポインタ)を組にして、鎖のようにつないだ構造です。(情報Ⅰの範囲を少し超えた発展の内容です)

なぜ
連結リストの各要素は、次の要素へのつながり(リンク)を持っています。ポインタをたどれば、順番どおりに読めます。途中に要素を入れるときは、つなぎ先を書き換えるだけで済みます。ただし、例えば 50 番目の要素を読むには、先頭から順にたどる必要があります。

ひっかけ注意

・「配列」…要素を添字で直接読み書きする構造。ポインタはたどらず、Data[3] のように番号で指定する。
・「スタック」…最後に入れたものから取り出す後入れ先出し(LIFO)の構造。1、2、3 と入れると 3、2、1 の順に出る。つなぎ方ではなく取り出し方の決まり。
・「ハッシュテーブル」…キーをハッシュ関数で計算して保存場所を決める構造。異なるキーが同じ場所になる場合を衝突という。
問54-8・基礎

階層的な関係(親子関係)を持つデータを表現するのに適したデータ構造で、最上位の節を「根(ルート)」と呼ぶものはどれか?

  • ①木構造(ツリー)
  • ②スタック
  • ③線形リスト
  • ④環状リスト
答えと解説を見る
正解 ①木構造(ツリー)
解説
正解は「木構造(ツリー)」。親と子の関係で、データを枝分かれさせて表す構造です。(情報Ⅰの範囲を少し超えた発展の内容です)

なぜ
木構造では、一番上の節(ノード)を根(ルート)と呼びます。親を持たない節は根だけです。そこから下へ枝分かれし、子を持たない末端の節を葉(リーフ)と呼びます。パソコンのフォルダの入れ子なども、この形で表せます。

ひっかけ注意

・「スタック」…最後に入れたものから取り出す構造(LIFO)。データは1列に積まれ、親子の枝分かれは無い。
・「線形リスト」…データを1列に並べてつないだ構造。各要素は次の1つとだけつながり、枝分かれしない。
・「環状リスト」…線形リストの末尾を先頭につないで輪にした構造。どの要素から始めても1周たどれる。
問64-8・標準

2次元配列 Gyouretsu = [[1, 2], [3, 4], [5, 6]] があるとき、要素 4 を取り出すための添字指定はどれか?(添字は0から。Gyouretsu[i, j] は i 番目の [ ] の中の j 番目の要素)

  • ①Gyouretsu[2, 2]
  • ②Gyouretsu[1, 1]
  • ③Gyouretsu[1, 0]
  • ④Gyouretsu[0, 1]
答えと解説を見る
正解 ②Gyouretsu[1, 1]
解説
正解は「Gyouretsu[1, 1]」。4 は、1番目の [3, 4] の中の、1番目の要素です(どちらも 0 から数えます)。

手順
①外側の添字を決める。[1, 2] が0番目、[3, 4] が1番目、[5, 6] が2番目なので、4 がある組は1番目。
②内側の添字を決める。[3, 4] の中で、3 が0番目、4 が1番目。
③2つを合わせて Gyouretsu[1, 1] となる。共通テスト用プログラム表記でも、2次元配列の要素は Data[2,4] のようにカンマで区切って指定する。

ひっかけ注意

・「Gyouretsu[2, 2]」…添字を 1 から数えた場合の書き方。0 から数えると外側の2番目は [5, 6] で、中に添字 2 の要素は無い。
・「Gyouretsu[1, 0]」…[3, 4] の0番目なので値は 3。内側の添字を1つ少なく数えている。
・「Gyouretsu[0, 1]」…[1, 2] の1番目なので値は 2。外側の添字を1つ少なく数えている。
問74-8・標準

図の木のように、すべての親ノードが「子ノードの値以下(または以上)」という条件を満たすように構成された、優先度付きキューなどに使われる構造はどれか?

253876
自作の図
  • ①スタック(Stack)
  • ②ハッシュ(Hash)
  • ③ヒープ(Heap)
  • ④グラフ(Graph)
答えと解説を見る
正解 ③ヒープ(Heap)
解説
正解は「ヒープ(Heap)」。親の値が、いつも子の値以下(または以上)になるように保った木構造です。(情報Ⅰの範囲を少し超えた発展の内容です)

なぜ
図では、どの親も子以下の値で、根には全体の最小値2が来ています。この決まりを守ると、根(一番上)には必ず全体の最小値(または最大値)が来ます。そのため、優先度の高いものから順に取り出す優先度付きキューに向いています。並べ替えの方法であるヒープソートにも使われます。

ひっかけ注意

・「スタック(Stack)」…最後に入れたものから取り出す構造(LIFO)。3、1、2 と入れると、大小に関係なく最後の 2 から出る。
・「ハッシュ(Hash)」…キーをハッシュ関数で計算して保存場所を決める方法(例:キーを10で割った余りを場所の番号にする)。親と子の大小の決まりは無い。
・「グラフ(Graph)」…点(頂点)と辺でつながりを表す構造の総称。木もグラフの一種だが、親子の大小の決まりは持たない。
問84-8・標準

キー(Key)と値(Value)のペアを保存し、キーを指定することで値を高速に取り出せるデータ構造(辞書型など)の実装に使われる技術はどれか?

  • ①ヒープ
  • ②線形リスト
  • ③キュー
  • ④ハッシュテーブル
答えと解説を見る
正解 ④ハッシュテーブル
解説
正解は「ハッシュテーブル」。キーから計算で保存場所を決めるので、キーを指定すると値をすばやく取り出せます。(情報Ⅰの範囲を少し超えた発展の内容です)

なぜ
ハッシュテーブルでは、キー(見出し)をハッシュ関数という計算にかけ、出てきた数を保存場所の番号にします。取り出すときも同じ計算をすれば、場所がすぐ分かります。異なるキーが同じ場所になることを衝突(コリジョン)といいます。キーと値の組を扱う辞書型(連想配列)の実現によく使われます。

ひっかけ注意

・「ヒープ」…親が子以下(または以上)になるように保つ木構造。根から最小値(最大値)を取り出すのに向く。
・「線形リスト」…1列につないだ構造。キーで探すには、先頭から順に1つずつたどる必要がある。
・「キュー」…先に入れたものから取り出す構造(FIFO)。1、2、3 と入れると 1 から出る。キーを指定して途中から取り出すことはできない。
問94-8・基礎

グラフ理論における「グラフ」の構成要素として、点(ノード)同士を結ぶ線を何と呼ぶか?

  • ①エッジ(辺)
  • ②ルート(根)
  • ③リーフ(葉)
  • ④レベル(深さ)
答えと解説を見る
正解 ①エッジ(辺)
解説
正解は「エッジ(辺)」。グラフで、点と点を結ぶ線をエッジ(辺)と呼びます。(情報Ⅰの範囲を少し超えた発展の内容です)

なぜ
グラフは、点(ノード、頂点)と、それらを結ぶ線(エッジ、辺)でつながりを表す図です。駅を点、線路を線にした路線図などが、その例です。辺に向きがあるグラフを有向グラフ、向きがないグラフを無向グラフといいます。

ひっかけ注意

・「ルート(根)」…木構造の一番上の節で、親を持たない唯一の節。線ではなく点。
・「リーフ(葉)」…木構造で子を持たない末端の節。子の数は 0 個で、これも線ではなく点。
・「レベル(深さ)」…根から何段下にあるかを表す数。根の深さは 0 で、線の名前ではない。
問104-8・基礎

添字の範囲を実行時に検査するプログラミング言語で、配列の添字(インデックス)として、配列の要素数以上の数値を指定した場合に発生するエラーはどれか?(添字は0から始まるものとする)

  • ①構文エラー(Syntax Error)
  • ②範囲外エラー(Out of Range)
  • ③型の不一致エラー(Type Error)
  • ④オーバーフロー(Overflow)
答えと解説を見る
正解 ②範囲外エラー(Out of Range)
解説
正解は「範囲外エラー(Out of Range)」。存在しない番号の要素を読もうとしたために起きるエラーです。

なぜ
添字が 0 から始まる場合、要素が5個の配列で使える添字は 0〜4 です。Data[5] のように要素数と同じ数を指定すると、その要素は存在しません。Python のように添字の範囲を調べる言語では、実行中にこのエラー(IndexError)が出て止まります。JavaScript のように、エラーにならず値が無い(undefined)とする言語もあります。

ひっかけ注意

・「構文エラー(Syntax Error)」…かっこの閉じ忘れなど、書き方の決まりに違反したときのエラー。動かす前の読み取りの段階で見つかる。
・「型の不一致エラー(Type Error)」…数と文字列を足すなど、値の種類(型)に合わない演算をしたときのエラー。
・「オーバーフロー(Overflow)」…計算結果が大きすぎて、決められたけた数で表せないときに起きる。添字を検査する言語では、範囲外の添字はこのエラーではなく範囲外エラーになる。

当サイトは、独立行政法人 大学入試センターとは一切関係のない、非公式の学習サイトです。試験に関する最新情報は、大学入試センターの公式サイトでご確認ください。

共通テスト 情報Ⅰ 基礎完全対策(全800問)に戻る

※本ページでは、アクセス解析(Googleアナリティクス)と、広告の配信・成果の計測(A8.net)のためにCookie等を利用し、閲覧に関する情報をGoogle LLC・株式会社ファンコミュニケーションズへ送信しています。詳しくはプライバシーポリシーをご覧ください。

※本ページの問題・解説は、生成AI(人工知能)を活用して作成しています。

【PR】