HOME»基本情報技術者試験掲示板»スタックについて
投稿する
スタックについて [5051]
かなこさん(No.1)
科目bの勉強のため『出るとこだけ!基本情報技術者科目b 第3版』を解いています
6章のスタックについて
スタックをトレースをする前に実行前の例を作って解く、と解説されているんですがその部分が理解できません。
問題文にそのように読み取れる場所はないです。
毎回スタックの時入れる順番や出す順番が固定されているということでしょうか?
未熟な疑問かもしれませんが説明出来る方いらっしゃいましたらよろしくお願いします。
6章のスタックについて
スタックをトレースをする前に実行前の例を作って解く、と解説されているんですがその部分が理解できません。
問題文にそのように読み取れる場所はないです。
毎回スタックの時入れる順番や出す順番が固定されているということでしょうか?
未熟な疑問かもしれませんが説明出来る方いらっしゃいましたらよろしくお願いします。
2023.09.03 13:43
まーぼさん(No.2)
★FE シルバーマイスター
一般的なスタックのプログラムなので適当な例を考えた方が分かりやすいということでしょう。
スタックポインタは次に値を入れる場所を指しているのですから、先にポインタをインクリメントすると想定通りの動作にはなりません。
スタックが空であるとき以下のようになります。
ptr
↓
[][][][]...
ここでpush(3)をしたときに
↓ptr
[3][][][]…
となるように穴を埋めたいわけです。
aが
ptr←ptr+1
stack[ptr] ←qvalだと次のようになってしまいます。
↓ptr
[][3][][]…
スタックポインタは次に値を入れる場所を指しているのですから、先にポインタをインクリメントすると想定通りの動作にはなりません。
スタックが空であるとき以下のようになります。
ptr
↓
[][][][]...
ここでpush(3)をしたときに
↓ptr
[3][][][]…
となるように穴を埋めたいわけです。
aが
ptr←ptr+1
stack[ptr] ←qvalだと次のようになってしまいます。
↓ptr
[][3][][]…
2023.09.03 16:00