アルゴリズムとプログラミング
基本情報技術者試験|単方向連結リストの各ノードは val と next(参照、末尾は NULL)をもつ。次の擬似言語は、low を…
単方向連結リストの各ノードは val と next(参照、末尾は NULL)をもつ。次の擬似言語は、low を 1 歩・high を 2 歩ずつ進める二走査ポインタ法で中間ノードを求め、その val を返す手続である。head→[100]→[200]→[300]→[400]→[500]→[600]→[700]→NULL(7 ノード)を与えて実行したとき、戻り値はどれか。
○整数型: middle(ノード: head)
ノード: low ← head
ノード: high ← head
while (high.next が NULL でない かつ high.next.next が NULL でない)
low ← low.next
high ← high.next.next
endwhile
return low.valエ400
ア30
イ500
ウ700の手前
正解
エ.400
high が low の倍速で進むため、high が末尾に達したとき low は全体の中央に位置する。7 ノードでは 4 番目で停止し val=400 となるため エが正しい。
?選択肢ごとの解説
エ ○high が low の倍速で進むため、high が末尾に達したとき low は全体の中央に位置する。7 ノードでは 4 番目で停止し val=400 となるため エが正しい。
ア ×3 番目ノード 300 の桁を取り違えて 30 とした、反復回数の数え誤りと桁の誤りである。
イ ×high の位置(5 番目付近)を中央と取り違えて 500 とした、low と high を混同した誤りである。
ウ ×末尾近くで停止すると曖昧に捉えて『700の手前』とした、停止位置を正確に特定できていない誤りである。
アルゴリズムとプログラミングの他の問題
単方向連結リストと比べた双方向連結リストの利点として最も適切なものはどれか。単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。先頭ノード…単方向連結リスト head→[10]→[20]→[30]→NULL がある。各ノードは val と next…単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ…単方向連結リストの各ノードは val(整数)と next(参照、なければ NULL)をもつ。次の擬似言語は、値…単方向連結リストの各ノードは val と next(参照、末尾は NULL)をもつ。次の擬似言語は、リスト a…空の 2 分探索木に対し、次の擬似言語の挿入規則に従って 400, 200, 600, 100, 300, 500…次の 2 分木がある。各ノードは値・左の子・右の子をもつ(子がなければ空)。
根=500、500 の左の子=300、500…
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。
基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。
登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0112
