スポンサーリンク

問題の解答・解説ページ

このページは解説の閲覧モードです。
実力試しをしたい方は、下のボタンからクイズに挑戦してください!

この問題をクイズ形式で解く
問題 No.2676
データ構造の一つであるスタックに関する記述として、不適切なものはどれか。

【正解の解説】

最初に追加したデータを最初に取り出す先入れ先出し(FIFO)方式でデータを管理する。

スタックは一番後に入れたデータが最初に出てくる構造ですが、選択肢Aは最初に入れたデータが最初に出るFIFO(先入れ先出し)構造を主張しているため不適切です。これはスーパーのレジ待ちや飲食店の順番待ちのように、並んだ順に処理される「キュー」の特徴そのものですので、スタックとキューの混同を狙った典型的なひっかけ問題となっています。

スポンサーリンク

【その他の選択肢の解説】

最後に追加したデータを最初に取り出す後入れ先出し(LIFO)方式でデータを管理する。

これはまさにスタックの正しい動作説明であり、本問における「不適切なもの」を探すという条件において、内容自体は正しい記述となります。例えるなら、机の上に積み重ねた書類の束のようなもので、一番上に置いた(最後に追加した)書類から順に取っていく「後入れ先出し(LIFO)」のルールを完璧に体現しているため、スタックの定義として正しい選択肢です。

データの追加や削除は原則としてリストの両端で行うことができる双方向の構造である。

スタックはデータの追加も削除も「一端(トップと呼ばれる片側のみ)」で行う構造であり、両端で自由に出し入れできるわけではありません。例えるなら、片側しか開いていない筒の中にボールを出し入れするようなものであり、両端が使えるという記述はスタックの限定的なアクセスルールに反するため誤りとなります。

ポインタが指し示すインデックス番号を指定して内部の任意のデータに直接アクセスする。

スタックは積み上げられた一番上のデータにしかアクセスできず、途中のデータを取り出すには上のデータをすべて取り除く必要があります。任意の場所に一瞬でアクセスできるのは「配列」や「ランダムアクセスメモリ」の性質であり、スタックの順番にしかアクセスできないという最大の特徴を無視した誤った記述です。