基本情報技術者(科目A)過去問集 - データ構造
令和7年6月修了試験 問5
葉以外の節点は全て二つの子をもち,根から葉までの深さが全て等しい木を考える。この木に関する記述のうち,適切なものはどれか。ここで,木の深さとは根から葉に至るまでの枝の個数を表す。また,節点には根及び葉も含まれる。
ア | 枝の個数がnならば,節点の個数もnである。 |
---|---|
イ | 木の深さがnならば,葉の個数は2n-1である。 |
ウ | 節点の個数がnならば,木の深さはlog2nである。 |
エ | 葉の個数がnならば,葉以外の節点の個数はn-1である。 |
令和7年1月修了試験 問5
ア | 要素を更新する場合,ポインタを順番にたどるだけなので,処理時間は短い。 |
---|---|
イ | 要素を削除する場合,削除した要素から後ろにある全ての要素を前に移動するので,処理時間は長い。 |
ウ | 要素を参照する場合,ランダムにアクセスできるので,処理時間は短い。 |
エ | 要素を挿入する場合,数個のポインタを書き換えるだけなので,処理時間は短い。 |
令和6年12月修了試験 問5
十分な大きさの配列Aと初期値が0の変数pに対して,関数 f(x) と g() が次のとおり定義されている。配列Aと変数pは,関数 f(x) と g() だけでアクセスが可能である。これらの関数が操作するデータ構造はどれか。
function f(x) {
p = p+1;
A[p] = x;
return None;
}
function g() {
x=A[p];
p = p-1;
return x;
}
function f(x) {
p = p+1;
A[p] = x;
return None;
}
function g() {
x=A[p];
p = p-1;
return x;
}
ア | キュー |
---|---|
イ | スタック |
ウ | ハッシュ |
エ | ヒープ |
令和6年7月修了試験 問5
ア | A,D,B,C |
---|---|
イ | B,D,A,C |
ウ | C,B,D,A |
エ | D,C,A,B |
令和5年7月修了試験 問5
空の状態のキューとスタックの二つのデータ構造がある。次の手続を順に実行した場合,変数xに代入されるデータはどれか。ここで,手続で引用している関数は,次のとおりとする。
〔関数の定義〕
push(y):データyをスタックに積む。
pop():データをスタックから取り出して,その値を返す。
enq(y):データyをキューに挿入する。
deq():データをキューから取り出して,その値を返す。
〔手続〕
push(a)
push(b)
eng(pop())
enq(c)
push(d)
push(deq())
x ← pop()
〔関数の定義〕
push(y):データyをスタックに積む。
pop():データをスタックから取り出して,その値を返す。
enq(y):データyをキューに挿入する。
deq():データをキューから取り出して,その値を返す。
〔手続〕
push(a)
push(b)
eng(pop())
enq(c)
push(d)
push(deq())
x ← pop()
ア | a |
---|---|
イ | b |
ウ | c |
エ | d |
令和5年公開問題 問2
双方向のポインタをもつリスト構造のデータを表に示す。この表において新たな社員Gを社員Aと社員Kの間に追加する。追加後の表のポインタ a~f の中で追加前と比べて値が変わるポインタだけを全て列記したものはどれか。
表
追加後の表
表
アドレス | 社員名 | 次ポインタ | 前ポインタ |
100 | 社員A | 300 | 0 |
200 | 社員T | 0 | 300 |
300 | 社員K | 200 | 100 |
追加後の表
アドレス | 社員名 | 次ポインタ | 前ポインタ |
100 | 社員A | a | b |
200 | 社員T | c | d |
300 | 社員K | e | f |
400 | 社員G | x | y |
ア | a,b,e,f |
---|---|
イ | a,e,f |
ウ | a,f |
エ | b,e |
令和5年1月修了試験 問7
2分木を入力するためのテキスト表現を,次のように規定した。図のように節に番号をつけたとき,テキスト表現として適切なものはどれか。
〔テキスト表現〕
(1)(左部分木の節番号又はテキスト表現,節番号,右部分木の節番号又はテキスト表現)と表す。
(2)部分木が空のときはxを書く。
〔テキスト表現〕
(1)(左部分木の節番号又はテキスト表現,節番号,右部分木の節番号又はテキスト表現)と表す。
(2)部分木が空のときはxを書く。

ア | ((1,2),3,(4,5,6)) |
---|---|
イ | ((1,2,3),x,(4,5,6)) |
ウ | ((1,2,x),3,(4,5,6)) |
エ | ((1,2,x),3,(6,5,4)) |
令和4年12月修了試験 問7
ア | ![]() |
---|---|
イ | ![]() |
ウ | ![]() |
エ | ![]() |
答え : イ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
令和4年6月修了試験 問8
10進法で5桁の数 a1a2a3a4a5 を,ハッシュ法を用いて配列に格納したい。ハッシュ関数を mod(a1+a2+a3+a4+a5,13) とし,求めたハッシュ値に対応する位置の配列要素に格納する場合,54321 は配列のどの位置に入るか。ここで,mod(x,13) は,xを13で割った余りとする。

ア | 1 |
---|---|
イ | 2 |
ウ | 7 |
エ | 11 |
令和4年1月修了試験 問7
リストを二つの1次元配列で実現する。配列要素 box[i] と next[i] の対がリストの一つの要素に対応し,box[i] に要素の値が入り,next[i] に次の要素の番号が入る。配列が図の状態の場合,リストの3番目と4番目との間に値がHである要素を挿入したときの next[8] の値はどれか。ここで,next[0] がリストの先頭(1番目)の要素を指し,next[i] の値が0である要素はリストの最後を示し,next[i] の値が空白である要素はリストに連結されていない。

ア | 3 |
---|---|
イ | 5 |
ウ | 7 |
エ | 8 |
令和3年7月修了試験 問7
2分探索木になっている2分木はどれか。
ア | ![]() |
---|---|
イ | ![]() |
ウ | ![]() |
エ | ![]() |
令和3年7月修了試験 問8
三つのスタックA,B,Cのいずれの初期状態も [1,2,3] であるとき,再帰的に定義された関数 f() を呼び出して終了した後のBの状態はどれか。ここで,スタックが [a1,a2,…,an-1] の状態のときに an をpushした後のスタックの状態は [a1,a2,…,an-1,an] で表す。
f(){
Aが空ならば{
何もしない。
}
そうでない場合{
Aからpopした値をCにpushする。
f() を呼び出す。
Cからpopした値をBにpushする。
}
}
f(){
Aが空ならば{
何もしない。
}
そうでない場合{
Aからpopした値をCにpushする。
f() を呼び出す。
Cからpopした値をBにpushする。
}
}
ア | [1,2,3,1,2,3] |
---|---|
イ | [1,2,3,3,2,1] |
ウ | [3,2,1,1,2,3] |
エ | [3,2,1,3,2,1] |
令和3年1月修了試験 問9
次の規則に従って配列の要素 A[0],A[1],…,A[9] に正の整数kを格納する。kとして 16,43,73,24,85 を順に格納したとき,85が格納される場所はどこか。ここで,x mod yは,xをyで割った剰余を返す。また,配列の要素は全て0に初期化されている。
〔規則〕
(1)A[k mod 10] = 0 ならば,k を A[k mod 10] に格納する。
(2)(1)で格納できないとき,A[(k+1) mod 10] = 0 ならば,k を A[(k+1) mod 10] に格納する。
(3)(2)で格納できないとき,A[(k+4) mod 10] = 0 ならば,k を A[(k+4) mod 10] に格納する。
〔規則〕
(1)A[k mod 10] = 0 ならば,k を A[k mod 10] に格納する。
(2)(1)で格納できないとき,A[(k+1) mod 10] = 0 ならば,k を A[(k+1) mod 10] に格納する。
(3)(2)で格納できないとき,A[(k+4) mod 10] = 0 ならば,k を A[(k+4) mod 10] に格納する。
ア | A[3] |
---|---|
イ | A[5] |
ウ | A[6] |
エ | A[9] |
令和2年12月修了試験 問7
キューに関する記述として,最も適切なものはどれか。
ア | 最後に格納されたデータが最初に取り出される。 |
---|---|
イ | 最初に格納されたデータが最初に取り出される。 |
ウ | 添字を用いて特定のデータを参照する。 |
エ | 二つ以上のポインタを用いてデータの階層関係を表現する。 |
令和2年7月修了試験 問8
ア | 格納された計算の途中結果を,格納された順番に取り出す処理 |
---|---|
イ | 計算の途中結果を格納し,別の計算を行った後で,その計算結果と途中結果との計算を行う処理 |
ウ | 昇順に並べられた計算の途中結果のうち,中間にある途中結果だけ変更する処理 |
エ | リストの中間にある計算の途中結果に対して,新たな途中結果の挿入を行う処理 |
令和2年6月修了試験 問8
待ち行列に対する操作を,次のとおり定義する。
ENQ n:待ち行列にデータnを挿入する。
DEQ :待ち行列からデータを取り出す。
空の待ち行列に対し,ENQ 1,ENQ 2,ENQ 3,DEQ,ENQ 4,ENQ 5,DEQ,ENQ 6,DEQ,DEQの操作を行った。次にDEQ操作を行ったとき,取り出されるデータはどれか。
ENQ n:待ち行列にデータnを挿入する。
DEQ :待ち行列からデータを取り出す。
空の待ち行列に対し,ENQ 1,ENQ 2,ENQ 3,DEQ,ENQ 4,ENQ 5,DEQ,ENQ 6,DEQ,DEQの操作を行った。次にDEQ操作を行ったとき,取り出されるデータはどれか。
ア | 1 |
---|---|
イ | 2 |
ウ | 5 |
エ | 6 |
令和2年1月修了試験 問8
PUSH命令でスタックにデータを入れ,POP命令でスタックからデータを取り出す。動作中のプログラムにおいて,ある状態から次の順で10個の命令を実行したとき,スタックの中のデータは図のようになった。1番目のPUSH命令でスタックに入れたデータはどれか。

ア | 29 |
---|---|
イ | 7 |
ウ | 326 |
エ | 55 |
令和2年1月修了試験 問9
16進数で表される9個のデータ1A,35,3B,54,8E,A1,AF,B2,B3を順にハッシュ表に入れる。ハッシュ値をハッシュ関数 f(データ) = mod(データ,8) で求めたとき,最初に衝突が起こるのはどのデータか。ここで,mod(a,b) はaをbで割った余りを表す。
ア | 54 |
---|---|
イ | A1 |
ウ | B2 |
エ | B3 |
答え : ウ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
令和1年秋期 問8
A,C,K,S,Tの順に文字が入力される。スタックを利用して,S,T,A,C,Kという順に文字を出力するために,最小限必要となるスタックは何個か。ここで,どのスタックにおいてもポップ操作が実行されたときには必ず文字を出力する。また,スタック間の文字の移動は行わない。
ア | 1 |
---|---|
イ | 2 |
ウ | 3 |
エ | 4 |
答え : ウ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成31年1月修了試験 問5
データ構造の一つであるリストは,配列を用いて実現する場合と,ポインタを用いて実現する場合とがある。配列を用いて実現する場合の特徴はどれか。ここで,配列を用いたリストは,配列に要素を連続して格納することによって構成し,ポインタを用いたリストは,要素から次の要素へポインタで連結することによって構成するものとする。
ア | 位置を指定して,任意のデータに直接アクセスすることができる。 |
---|---|
イ | 並んでいるデータの先頭に任意のデータを効率的に挿入することができる。 |
ウ | 任意のデータの参照は効率的ではないが,削除や挿入の操作を効率的に行える。 |
エ | 任意のデータを別の位置に移動する場合,隣接するデータを移動せずにできる。 |
平成30年12月修了試験 問8
プログラムの実行に関する次の記述の下線部 a~d のうち,いずれかに誤りがある。誤りの箇所と正しい字旬の適切な組合せはどれか。
自分自身を呼び出すことができるプログラムは,a再帰的であるという。このようなプログラムを実行するときは,bスタックに局所変数,c仮引数及び戻り番地を格納して呼び出し,復帰するときはdFIFO(First In First Out)方式で格納したデータを取り出して復元する必要がある。
自分自身を呼び出すことができるプログラムは,a再帰的であるという。このようなプログラムを実行するときは,bスタックに局所変数,c仮引数及び戻り番地を格納して呼び出し,復帰するときはdFIFO(First In First Out)方式で格納したデータを取り出して復元する必要がある。
誤りの箇所 | 正しい字句 | |
ア | a | 再入可能 |
イ | b | 待ち行列 |
ウ | c | 実引数 |
エ | d | LIFO(Last In First Out) |
答え : エ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成30年春期 問5
次の二つのスタック操作を定義する。
PUSH n:スタックにデータ(整数値n)をプッシュする。
POP:スタックからデータをポップする。
空のスタックに対して,次の順序でスタック操作を行った結果はどれか。
PUSH 1 → PUSH 5 → POP → PUSH 7 → PUSH 6 → PUSH 4 → POP → POP → PUSH 3
PUSH n:スタックにデータ(整数値n)をプッシュする。
POP:スタックからデータをポップする。
空のスタックに対して,次の順序でスタック操作を行った結果はどれか。
PUSH 1 → PUSH 5 → POP → PUSH 7 → PUSH 6 → PUSH 4 → POP → POP → PUSH 3
ア |
| ||||
---|---|---|---|---|---|
イ |
| ||||
ウ |
| ||||
エ |
|
平成29年12月修了試験 問5
次の2分探索木から要素12を削除したとき,その位置に別の要素を移動するだけで2分探索木を再構成するには,削除された要素の位置にどの要素を移動すればよいか。

ア | 9 |
---|---|
イ | 10 |
ウ | 13 |
エ | 14 |
平成29年12月修了試験 問17
ア | サブルーチンからの戻り番地の退避にはスタック領域が使用され,割当てと解放の順序に関連がないデータの格納にはヒープ領域が使用される。 |
---|---|
イ | スタック領域には未使用領域が存在するが,ヒープ領域には未使用領域は存在しない。 |
ウ | ヒープ領域はスタック領域の予備領域であり,スタック領域が一杯になった場合にヒープ領域が動的に使用される。 |
エ | ヒープ領域も構造的にはスタックと同じプッシュとポップの操作によって,データの格納と取出しを行う。 |
答え : ア
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成29年1月修了試験 問6
親の節の値が子の節の値より小さいヒープがある。このヒープへの挿入は,要素を最後部に追加し,その要素が親よりも小さい間,親と子を交換することを繰り返せばよい。次のヒープの*の位置に要素7を追加したとき,Aの位置に来る要素はどれか。

ア | 7 |
---|---|
イ | 11 |
ウ | 24 |
エ | 25 |
答え : イ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成28年春期 問5
10個の節(ノード)から成る次の2分木の各節に,1から10までの値を一意に対応するように割り振ったとき,節a,bの値の組合せはどれになるか。ここで,各節に割り振る値は,左の子及びその子孫に割り振る値よりも大きく,右の子及びその子孫に割り振る値よりも小さくするものとする。

ア | a=6,b=7 |
---|---|
イ | a=6,b=8 |
ウ | a=7,b=8 |
エ | a=7,b=9 |
平成28年春期 問6
2次元の整数型配列aの各要素 a(i,j)の値は,2i+j である。このとき,a(a(1,1)×2,a(2,2)+1)の値は幾つか。
ア | 12 |
---|---|
イ | 13 |
ウ | 18 |
エ | 19 |
答え : エ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成27年秋期 問5
ア | 先頭の要素を根としたn分木で,先頭以外の要素は全て先頭の要素の子である。 |
---|---|
イ | 配列を用いた場合と比較して,2分探索を効率的に行うことが可能である。 |
ウ | ポインタから次の要素を求めるためにハッシュ関数を用いる。 |
エ | ポインタによって指定されている要素の後ろに,新たな要素を追加する計算量は,要素の個数や位置によらず一定である。 |
答え : エ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成27年6月修了試験 問5
次の2分探索木に12を追加したとき,追加された節12の位置を正しく表している図はどれか。
ア | ![]() |
---|---|
イ | ![]() |
ウ | ![]() |
エ | ![]() |
答え : ウ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成26年12月修了試験 問6
節点1,2,…,nをもつ木を表現するために,大きさnの整数型配列 A[1],A[2],…,A[n] を用意して,節点iの親の番号を A[i] に格納する。節点kが根の場合は A[k]=0 とする。表に示す配列が表す木の葉の数は,幾つか。
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
A[i] | 0 | 1 | 1 | 3 | 3 | 5 | 5 | 5 |
ア | 1 |
---|---|
イ | 3 |
ウ | 5 |
エ | 7 |
平成26年1月修了試験 問6
ア | 階層の上位から下位に節点をたどることによって,データを取り出すことができる。 |
---|---|
イ | 格納した順序でデータを取り出すことができる。 |
ウ | 格納した順序とは逆の順序でデータを取り出すことができる。 |
エ | データ部と一つのポインタ部で構成されるセルをたどることによって,データを取り出すことができる。 |
平成25年秋期 問6
ア | リストにある実際の要素数にかかわらず,リストの最大長に対応した領域を確保し,実際には使用されない領域が発生する可能性がある。 |
---|---|
イ | リストにある実際の要素数にかかわらず,リストへの挿入と削除は一定時間で行うことができる。 |
ウ | リストの中間要素を参照するには,リストの先頭から順番に要素をたどっていくので,要素数に比例した時間が必要となる。 |
エ | リストの要素を格納する領域の他に,次の要素を指し示すための領域が別途必要となる。 |
答え : ア
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成24年秋期 問5
四つのデータA,B,C,Dがこの順に入っているキューと空のスタックがある。手続pop_enq,deq_pushを使ってキューの中のデータをD,C,B,Aの順に並べ替えるとき,deq_pushの実行回数は最小で何回か。ここで,pop_enqはスタックから取り出したデータをキューに入れる操作であり,deq_pushはキューから取り出したデータをスタックに入れる操作である。
ア | 2 |
---|---|
イ | 3 |
ウ | 4 |
エ | 5 |
答え : イ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成24年春期 問7
ア | リストの先頭にデータを挿入する。 |
---|---|
イ | リストの先頭のデータを削除する。 |
ウ | リストの末尾にデータを挿入する。 |
エ | リストの末尾のデータを削除する。 |
答え : エ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成23年秋期 問5
スタック1,2があり,図の状態になっている。関数fはスタック1からポップしたデータをそのままスタック2にプッシュする。関数gはスタック2からポップしたデータを出力する。b,c,d,aの順番に出力するためには,関数をどの順で実行すればよいか。

ア | f,f,g,f,f,g,g,g |
---|---|
イ | f,f,g,f,g,f,g,g |
ウ | f,f,g,f,g,g,f,g |
エ | f,f,g,g,f,f,g,g |
答え : イ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成23年7月修了試験 問5
データ構造に関する記述のうち,適切なものはどれか。
ア | 2分木は,データ間の関係を階層的に表現する木構造の一種であり,すべての節が二つの子をもつデータ構造である。 |
---|---|
イ | スタックは,最初に格納したデータを最初に取り出す先入れ先出しのデータ構造である。 |
ウ | 線形リストは,データ部と次のデータの格納先を指すポインタ部から構成されるデータ構造である。 |
エ | 配列は,ポインタの付替えだけでデータの挿入・削除ができるデータ構造である。 |
答え : ウ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成23年春期 問5
空の2分探索木に,8,12,5,3,10,7,6の順にデータを与えたときにできる2分探索木はどれか。
ア | ![]() |
---|---|
イ | ![]() |
ウ | ![]() |
エ | ![]() |
答え : エ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成21年12月修了試験 問5
すべての葉が同じ深さをもち,葉以外のすべての節点が二つの子をもつ2分木に関して,節点数と深さの関係を表す式はどれか。ここで,nは節点数,kは根から葉までの深さを表す。例に示す2分木の深さkは2である。

ア | n=2k+3 |
---|---|
イ | n=2k+1-1 |
ウ | n=(k-1)(k+1)+4 |
エ | n=k(k+1)+1 |
答え : イ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
平成21年12月修了試験 問6
B木に関する記述として,適切なものはどれか。
ア | 階層の深さが同じになるように,ノードの分割と併合を行う。 |
---|---|
イ | キー値からある関数によって,データの格納位置を求める。 |
ウ | 先頭データからの順次アクセスだけが可能である。 |
エ | 登録簿とメンバに分かれ,メンバは順編成ファイルである。 |
答え : ア
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › データ構造