第2種情報処理技術者試験 1995年度 = 平成7年度・秋期 午前 問11

 プログラムPは、スタックにデータをPUSHする処理と、スタックからデータをPOPする処理の両方を行う。プログラムPがA1、A2、A3、…、A100の順序で入力されたデータを処理した結果、スタックの内容は図のとおりになった。この時点までのプログラムPの処理に関する正しい記述はどれか。

  ─┐   ┌─    ├───┤     │A99│     ├───┤     │A98│     ├───┤     │ : │     │ : │     ├───┤     │A11│     ├───┤     │A10│     ├───┤     │ A2 │     └───┘ 

 ア  1番目のPUSHと2番目のPUSHの間でPOPした。
 イ  3番目のPUSHと10番目のPUSHの間でPOPはしていない。
 ウ  10番目のPUSHを行う前に、9回POPした。
 エ  PUSHした回数よりPOPした回数のほうが多い。
 オ  最後のPUSHを行った後POPはしていない。

解答

 ア

解説

 スタックstack)は、データを後入れ先出しLIFOLast-In First-Out)で蓄えます。ちょうど、机の上に重ねた皿のように、最も上に重ねた皿を優先的に取り出すのと同様です。
 まずについて考えましょう。
(1)最初にA1をPUSHします。
(2)A1をPOPします。スタックは空となります。
(3)A2をPUSHします。
これで、スタックの最も底のデータはA2となります。
 解答として適切であることが分かります。

    (1)      (2)      (3)   ─┐   ┌─  ─┐   ┌─  ─┐   ┌─    │   │    │   │    │   │      ├───┤    ├───┤    ├───┤      │   │    │   │    │   │      ├───┤    ├───┤    ├───┤      │   │    │   │    │   │      ├───┤    ├───┤    ├───┤      │ A1 │    │   │    │ A2 │      └───┘    └───┘    └───┘  



BohYoh.comトップページへ