ITパスポート試験 / 平成30年度 秋期 ITパスポート試験 公開問題 / 問76
certification-simodake-work

平成30年度 秋期 ITパスポート試験 公開問題 問76 解説 スタックのデータ構造

複数のデータが格納されているスタックからのデータの取出し方として,適切なものはどれか。

  1. ア 格納された順序に関係なく指定された任意の場所のデータを取り出す。
  2. イ 最後に格納されたデータを最初に取り出す。 ✓ 正答
  3. ウ 最初に格納されたデータを最初に取り出す。
  4. エ データがキーをもっており,キーの優先度でデータを取り出す。

解説

この問題の正解を導く鍵は、スタックという言葉が持つ「後入れ先出し」という特性を覚えているかどうかです。スタックは英語で積み重ねることを意味し、文字通り積まれた皿のように、最後に置いたものから順に取り出す構造を指します。

スタックの仕組みとLIFO スタックはコンピュータのメモリ管理などで頻繁に使われるデータ構造の一つです。この仕組みはLIFO(Last-In, First-Out)と呼ばれ、最後に格納した(Last-In)データが最初に取り出される(First-Out)というルールで動作します。

一方、選択肢ウの「最初に格納されたデータを最初に取り出す」構造は、キュー(待ち行列)と呼ばれます。こちらはFIFO(First-In, First-Out)といい、窓口に並ぶ行列のように、先に並んだ人から先に処理される仕組みです。

実務におけるスタックの活用例 プログラミングやシステム開発の現場では、スタックの仕組みが随所で利用されています。特に代表的なのが、アプリケーションの「やり直し(Undo)」機能です。ユーザーが行った操作が時系列順にスタックに積まれ、取り消しボタンを押すと最新の操作から一つずつ取り消されていきます。

また、コンピュータが関数を呼び出す際の処理でもスタックが使われます。関数Aが関数Bを呼び出し、そのBがさらにCを呼び出すような場合、処理の終了時にはC、B、Aの順で戻っていく必要があります。このような「ネスト(入れ子)」構造の管理にも、スタックのLIFOという性質が不可欠です。

混同しやすい用語との整理 ITパスポート試験では、データ構造の違いを問う問題がよく出題されます。以下の3点をセットで整理しておくと、類似問題にも対応しやすくなります。

スタック:LIFO(後入れ先出し)。積まれた皿のイメージ。 キュー:FIFO(先入れ先出し)。レジの行列のイメージ。 優先度付きキュー:優先順位が高いものから取り出す。割り込み処理などが可能な行列のイメージ。

  • わかりやすいアルゴリズム「スタックとキュー」
  • 情報処理技術者試験の過去問解説サイト「スタック」

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう