1.やさしい
「後入れ先出し」(LIFO)の原理で動作するデータ構造はどれですか。
- Aハッシュテーブル(Hash table)
- Bキュー(Queue)
- C連結リスト(Linked list)
- Dスタック(Stack)
2.やさしい
木において、兄弟(sibling)ノードとは何ですか。
- A同じ親をもつノード
- B子をもたないノード
- C異なる部分木の同じ深さにあるノード
- Dあるノードとその親
3.やさしい
静的配列と動的配列の主な違いは何ですか。
- A静的配列は数値しか格納できない
- B静的配列はインデックスによるアクセスが遅い
- C動的配列は、より大きなメモリブロックに移ることで拡張できる
- D動的配列は要素を連結されたノードに格納するので、1 つずつ拡張できる
4.ふつう
ある道路網には 100,000 の交差点があり、それぞれが約 4 つの他の交差点とつながっています。最も適した表現はどれですか。
- A隣接リスト
- B隣接行列
- C頂点の 1 つのソート済み配列
- D辺の二分ヒープ
5.ふつう
連結リストにおける番兵(ダミー)ノードの目的は何ですか。
- A要素の数を格納する
- Bリストをソートされた状態にする
- Cリストのノード数が決まった最大値を超えて増えないようにする
- D先頭や末尾での特別な場合をなくしてコードを単純にする
6.ふつう
同じ長さの連結リストを走査するより、配列を走査する方が実際にはずっと速いことが多いのはなぜですか。
- A配列の要素は連続しているので、CPU キャッシュを有効に使えるから
- B連結リストは常に要素をディスクに格納するから
- C配列では値を比較する命令が少なくて済むから
- D配列の走査は全体で O(1)、連結リストの走査は O(n) だから
7.むずかしい
単方向連結リストをその場で反転させる時間と追加領域のコストはどれですか。
- A時間 O(n)、追加領域 O(n)
- B時間 O(n log n)、追加領域 O(1)
- C時間 O(1)、追加領域 O(1)
- D時間 O(n)、追加領域 O(1)
8.むずかしい
n 個の数からなるストリームから、O(k) のメモリで最小の k 個の値を保持しなければなりません。O(n log k) 時間で動作する方法はどれですか。
- An 個すべての値のソート済み配列
- Bn 個すべての値を保持する最小ヒープで、最後に小さい方から k 個を取り出す
- Cサイズ k の最大ヒープを使い、より小さい値が来たら根を置き換える
- D最後の k 個の値の FIFO キュー
解答
- 1. D · スタック(Stack)
- 2. A · 同じ親をもつノード
- 3. C · 動的配列は、より大きなメモリブロックに移ることで拡張できる
- 4. A · 隣接リスト
- 5. D · 先頭や末尾での特別な場合をなくしてコードを単純にする
- 6. A · 配列の要素は連続しているので、CPU キャッシュを有効に使えるから
- 7. D · 時間 O(n)、追加領域 O(1)
- 8. C · サイズ k の最大ヒープを使い、より小さい値が来たら根を置き換える
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。