プログラミングの基礎(擬似言語のトレース)

要素数5の整数型の配列 st と整数型の変数 top でスタックを表す。st の要素はすべて0、top は0から始める。push(v) は top に1を加えてから st[top] ← v を行い、pop() は st[top] の値を返してから top から1を引く(st の要素は変えない)。次のプログラムを実行した後の top と st の組はどれか。

push(5)
push(8)
pop()
push(3)
push(9)
pop()
push(7)
pop()
  1. Atop = 2、st = {5, 3, 0, 0, 0}
  2. Btop = 2、st = {5, 3, 7, 0, 0}
  3. Ctop = 5、st = {5, 8, 3, 9, 7}
答えと解説を見る

正解:B. top = 2、st = {5, 3, 7, 0, 0}

push(5)、push(8) で st[1] = 5、st[2] = 8、top = 2 になり、pop() で8を返して top = 1 です。push(3) は st[2] を3で上書きし、push(9) で st[3] = 9、pop() で top = 2 に戻ります。push(7) は st[3] を7で上書きし、最後の pop() で top = 2 になります。pop() は top を減らすだけなので、取り出した7は st[3] に残り、st = {5, 3, 7, 0, 0} です。スタックの中身として有効なのは、st[1]〜st[top] の5と3です。

  • A. pop() で要素を0に消すと考えた場合の内容です。pop() は top を減らすだけです。
  • B. 正しい。top = 2 で、取り出した7は st[3] に残ります。
  • C. pop() で top が減らず、push のたびに後ろへ追加されると考えた場合の内容です。
この分野を解く 分野ページへ

関連する計算ツール

プログラミングの基礎(擬似言語のトレース)の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

プログラミングの基礎(擬似言語のトレース)のほかの問題

  1. 要素数4の文字列型の配列 q を環状に使うキューがある。head と tail の初期値は1で、enq(v) は q[tail] ← v の後に tail ← tail mod 4 + 1 を行い、deq() は q[head] の値を返した後に head ← head mod 4 + 1 を行う。次のプログラムを実行したとき、「E」が格納される q の要素はどれか。
  2. 次のプログラムは、配列 next で要素どうしをつないだ連結リストを、要素番号1の要素から順にたどって出力する。配列の要素番号は1から始まる。next の値0はリストの終わりを表す。出力される値の並びはどれか。
  3. 次のプログラムは、配列 next でつないだ連結リスト A → C → E → D → B の「C」(要素番号3)の直後に、val[6] の「F」を挿入してから、要素番号1の要素から順にたどって出力する。配列の要素番号は1から始まる。next の値0はリストの終わりを表す。出力が A, C, F, E, D, B となるように【a】に入れる処理はどれか。
  4. 制御変数を5ずつ増やす次の for 文を実行した後の c の値はどれか。
  5. 次のプログラムの and は、左側の式が false のときは右側の式を評価しない(短絡評価)。cnt は大域変数である。実行した後の cnt の値はどれか。