問題
問76
複数のデータが格納されているスタックからのデータの取出し方として、適切なものはどれか。
- 格納された順序に関係なく指定された任意の場所のデータを取り出す。
- 最後に格納されたデータを最初に取り出す。
- 最初に格納されたデータを最初に取り出す。
- データがキーをもっており、キーの優先度でデータを取り出す。
[出典:ITパスポート試験 平成30年度秋期 問76]
正解
正解は「イ」です。
解説
正解は「最後に格納されたデータを最初に取り出す」です。 スタックは、データを格納したり取り出したりする際、「LIFO(Last-In, First-Out:後入れ先出し)」という原則に従うデータ構造の一つです。LIFOとは、一番最後にスタックに格納されたデータが、一番最初に取り出されるという仕組みを指します。
例えば、お皿を何枚か積み重ねていく状況を想像してみてください。積み重ねたお皿の中から一枚取り出すとき、一番上に置いたお皿(つまり、最後に置いたお皿)を最初に取り出しますよね。これがスタックの基本的な動作と同じです。 コンピュータの分野では、プログラムが関数を呼び出すときの履歴管理や、Webブラウザの「戻る」ボタンの機能、テキストエディタの「元に戻す」機能などにスタックが使われています。最後に実行した操作が最初にキャンセルされる、という仕組みは、まさにスタックのLIFO特性を応用したものです。
ア(格納された順序に関係なく指定された任意の場所のデータを取り出す。):
これは、配列やリストといったデータ構造で可能な操作であり、スタックの特性ではありません。スタックでは、データの取り出し順序が決まっています。
ウ(最初に格納されたデータを最初に取り出す。):
これは、キュー(Queue)と呼ばれるデータ構造の特性です。キューは「FIFO(First-In, First-Out:先入れ先出し)」という原則に従います。例えば、レジに並んだ行列のように、先に並んだ人からサービスを受けるのと同じ考え方です。
エ(データがキーをもっており、キーの優先度でデータを取り出す。):
これは、優先度キューやハッシュテーブルなど、特定のキーや優先度に基づいてデータを管理するデータ構造の特性です。スタックにはこのような機能はありません。
難易度
この問題は、ITパスポート試験で頻出する基本的なデータ構造「スタック」の概念を問うものです。スタックが持つ「LIFO(Last-In, First-Out:後入れ先出し)」という特性を理解していれば、比較的容易に解答できるでしょう。身近な例(積まれたお皿など)と結びつけて覚えると、理解しやすくなります。
用語補足
スタック:
「LIFO(Last-In, First-Out:後入れ先出し)」という原則に基づいてデータを格納・取り出す、線形なデータ構造の一種です。例として、積まれたお皿の一番上のお皿を取り出すようなイメージです。
LIFO (Last-In, First-Out):
「後入れ先出し」と訳され、データ構造の原則の一つです。最後に格納されたデータが、最も早く取り出されるという方式を指します。スタックで用いられます。
キュー (Queue):
「FIFO(First-In, First-Out:先入れ先出し)」という原則に基づいてデータを格納・取り出すデータ構造です。例として、レジの行列で先に並んだ人からサービスを受けるようなイメージです。
FIFO (First-In, First-Out):
「先入れ先出し」と訳され、データ構造の原則の一つです。最初に格納されたデータが、最も早く取り出されるという方式を指します。キューで用いられます。
対策
この問題を解くためのポイントは、主要なデータ構造である「スタック」と「キュー」の基本的な動作原理を正確に理解することです。特に、スタックは「LIFO(Last-In, First-Out:後入れ先出し)」、キューは「FIFO(First-In, First-Out:先入れ先出し)」という原則をしっかりと覚え、それぞれの仕組みを混同しないようにしましょう。身近な例と紐付けて覚えることで、より記憶に定着しやすくなります。例えば、スタックは「積み重ねたお皿」、キューは「行列」と考えると良いでしょう。

