問題 No.1724
データ構造の一つであるスタック(Stack)の動作として、適切なものはどれか。
【正解の解説】
最後に入力されたデータが最初に取り出される、後入れ先出し(LIFO)の方式である。
スタックは、積み上げた皿を上から順に取り出すイメージです。最後に入れたものが一番先に出てくる仕組みにより、関数呼び出しの戻り先管理やブラウザの「戻る」ボタンといった、履歴を逆順に辿る処理で極めて重要な役割を果たします。
スポンサーリンク
【その他の選択肢の解説】
最初に入力されたデータが最初に取り出される、先入れ先出し(FIFO)の方式である。
先に入ったものが先に出る「FIFO(First In, First Out)」は、行列のように並んで順番を待つ仕組みです。スタックと対になる概念であり、プリンタの印刷待ちやタスクの順次処理など、公平性が求められる場面で活用されます。
要素を順序付けして管理し、データの挿入や削除を任意の位置で自由に行える方式である。
スタックは入出力場所が「頂上」の一箇所に制限されていますが、この説明にあるように任意の位置での挿入・削除が可能な構造は「リスト」と呼ばれます。スタックよりも柔軟ですが、その分管理コストやメモリ利用の特性が異なります。
要素を循環させて管理し、空き領域を効率的に再利用するためのリング状の方式である。
リングバッファは、メモリの終わりまで到達すると先頭に戻る仕組みで、限られた容量を効率的に再利用するための手法です。スタックのように入出力が片端に限定されるものではなく、データ通信のバッファ管理などで非常によく利用されます。