正答3
解説
正解は3です。
関数呼出しで保存した戻り番地や途中データは、後から呼び出した関数の分から先に取り出す必要があります。
この「後入れ先出し」に適したデータ構造を問う問題です。
【選択肢別解説】
1:× 2分探索木は、左の子に小さい値、右の子に大きい値を置いて探索を速くする構造です。
呼出し順の逆順で取り出す用途には向きません。
2:× キューは、先に入れたものから先に取り出すFIFO(First In First Out)構造です。
最後に呼び出した関数から戻る順序と合いません。
3:○ スタックは、最後に入れたものを最初に取り出すLIFO(Last In First Out)構造です。
入れ子になった呼出しから順に戻る処理に合うので正しいです。
4:× 双方向連結リストは、前後どちらの方向にも要素をたどれるリストです。
取り出し順序を自動的に管理する仕組みではありません。
【ポイント】
関数Aが関数Bを呼び、BがCを呼ぶと、戻るときはC、B、Aの順になります。
この性質から、サブルーチン呼出しや再帰処理にはスタックが使われます。