アルゴリズムとプログラミング
基本情報技術者試験「連結リスト」の問題
単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。先頭ノード head から順に val を合計する次の手続に、head→[112]→[88]→[115]→NULL のリストを与えて実行したとき、戻り値はどれか。
○整数型: total(ノード: head)
整数型: sum ← 0
ノード: cur ← head
while (cur が NULL でない)
sum ← sum + cur.val
cur ← cur.next
endwhile
return sumア35
イ3150
ウ315
エ203
正解
ウ.315
cur が NULL になるまで各ノードの val を sum に加える。112, 88, 115 をすべて加えて 112+88+115=315 となるため ウが正しい。
?選択肢ごとの解説
ア ×合計 315 の桁を取り違え、各 val の十の位だけを拾うなどして 35 とした桁の誤りである。
イ ×加算ではなく桁を連結・スケールしてしまい 3150 とした、加算結果を 10 倍に膨らませた誤りである。
ウ ○cur が NULL になるまで各ノードの val を sum に加える。112, 88, 115 をすべて加えて 112+88+115=315 となるため ウが正しい。
エ ×先頭ノード 112 を処理せず 88+115=203 を求め、初期 cur の位置を 1 つ進めすぎた off-by-one 的誤りである。
アルゴリズムとプログラミングの他の問題
この問題の「深掘り・誤答の完全解説・試験のコツ・覚え方」はアプリで。
無料ではじめる →基本情報技術者試験の全問を、一問ごとにAIの8-ways解説つきで。SRS暗記カード・全真模試・弱点診断まで。まずは無料で。
作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0005
