アルゴリズムとプログラミング

基本情報技術者試験連結リスト」の問題

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
単方向連結リストの各ノードはメンバ 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

【基本情報技術者試験】連結リストの問題と解答・解説|ukamiru 過去問