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

基本情報技術者試験単方向連結リストの各ノードは val と next(参照、末尾は NULL)をもつ。次の擬似言語は、リスト a…

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
単方向連結リストの各ノードは val と next(参照、末尾は NULL)をもつ。次の擬似言語は、リスト a の末尾にリスト b をつなげ、連結後の先頭を返す手続である。a=headA→[110]→[220]→[330]→NULL、b=headB→[440]→[550]→NULL を与えて実行したとき、返された先頭から末尾までの val の並びはどれか。
○ノード: concat(ノード: a, ノード: b)
  if (a が NULL)
    return b
  endif
  ノード: cur ← a
  while (cur.next が NULL でない)
    cur ← cur.next
  endwhile
  cur.next ← b
  return a
{110, 220, 330, 440, 550}
{110, 440, 220, 550, 330, 110}
{440, 550, 110}
{110, 220, 330}
正解
ウ.{110, 220, 330, 440, 550}

while で a の末尾(next が NULL のノード 330)まで進み、その next に b の先頭 440 を接続する。先頭 a を返すので並びは {110, 220, 330, 440, 550} となり ウが正しい。

?選択肢ごとの解説

ウ ○while で a の末尾(next が NULL のノード 330)まで進み、その next に b の先頭 440 を接続する。先頭 a を返すので並びは {110, 220, 330, 440, 550} となり ウが正しい。
ア ×2 つのリストを交互に併合したうえ先頭 110 を重複させて {110, 440, 220, 550, 330, 110}…
イ ×b を a の前に置いたうえ末尾を取りこぼして {440, 550, 110} とした、接続の向きを逆にし要素も落とした誤りである。
エ ×b を接続せず a の元の並び {110, 220, 330} のままとした、末尾への接続を行わなかった誤りである。
この問題の「深掘り・誤答の完全解説・覚え方」は、登録すると読めます。

基本情報技術者試験は全4,036問。公開しているのはその一部で、登録すると残りも一問ごとにAI解説つきで解けます。SRS暗記カード・全真模試・弱点診断まで。

登録は1分・クレジットカード不要。無料のまま練習・暗記カード・模試まで使えます。

作成・校閲:ukamiru編集部 · 基本情報技術者試験 過去問 · fe-b-algo-0111

【基本情報技術者試験】単方向連結リストの各ノードは val と…|正解「{110, 220,…」|ukamiru 過去問