1.やさしい
グラフの隣接リスト表現では、各頂点について何が格納されますか。
- A他のすべての頂点への最短経路
- BV 個の真偽値からなる行
- C隣接する頂点のリスト
- Dグラフの辺の総数
2.やさしい
木の根(ルート)とは何ですか。
- A最大の値を持つノード
- B子を持たないノード
- C中間にある任意のノード
- D親を持たない最上位のノード
3.やさしい
「先入れ先出し」(FIFO)の原理で動作するデータ構造はどれですか。
- A二分木(Binary tree)
- Bスタック(Stack)
- Cヒープ(Heap)
- Dキュー(Queue)
4.ふつう
同じ長さの連結リストを走査するより、配列を走査する方が実際にはずっと速いことが多いのはなぜですか。
- A配列の要素は連続しているので、CPU キャッシュを有効に使えるから
- B配列の走査は全体で O(1)、連結リストの走査は O(n) だから
- C配列では値を比較する命令が少なくて済むから
- D連結リストは常に要素をディスクに格納するから
5.ふつう
ある二分木の根は 1 で、左の子が 2、右の子が 3 です。ノード 2 の子は 4(左)と 5(右)です。帰りがけ順の走査はどれですか。
- A4 5 2 3 1
- B4 2 5 1 3
- C1 2 4 5 3
- D5 4 3 2 1
6.ふつう
トライ(接頭辞木)が特に効率的なのはどのような用途ですか。
- Aオートコンプリートなどの接頭辞検索
- B行列の格納
- C数値のソート
- D最短経路の探索
7.むずかしい
スプレー木は各アクセスの後に何をしますか。
- A木全体を平衡な形に作り直す
- Bアクセスしたノードを根まで回転させて持ち上げる
- Cアクセスしたノードを葉に移す
- D探索経路上のノードの色を塗り替える
8.むずかしい
ある動的配列は満杯になるとサイズを 2 倍にします。多くの実装が、半分ではなく 4 分の 1 まで減ったときにだけ縮小するのはなぜですか。
- A境界付近で push と pop が交互に起こるときに、サイズ変更が繰り返されるのを避けるため
- Bメモリアロケータはブロックの 4 分の 1 単位でしかメモリを解放できないから
- C配列をソートされた状態に保つため
- D半分で半減させると要素が失われるから
解答
- 1. C · 隣接する頂点のリスト
- 2. D · 親を持たない最上位のノード
- 3. D · キュー(Queue)
- 4. A · 配列の要素は連続しているので、CPU キャッシュを有効に使えるから
- 5. A · 4 5 2 3 1
- 6. A · オートコンプリートなどの接頭辞検索
- 7. B · アクセスしたノードを根まで回転させて持ち上げる
- 8. A · 境界付近で push と pop が交互に起こるときに、サイズ変更が繰り返されるのを避けるため
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。