1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🧶 スタック&逆ポーランド記法

Last updated at Posted at 2024-04-11

逆ポーランド記法では、例えば4 + 5 * 6 + 7は4 5 6 * + 7 +と書きます。
ぱっと見「うわっ!なんじゃこりゃ」となりますが、このほうがシンプルです。

今:[]
まず、4と書いてあるので4と書いた積み木を置きます。
今:[4]
次は5なので、5と書かれた積み木を上に乗せます。「スタック」してますね!
今:[4, 5]
そして6なので、6を書いた積み木を上に乗せます。
今:[4, 5, 6]
次は数字ではなく「」(×)が出てきました。掛け算は2つの引数を取るので、上2つの積み木を消し、それらの積み木に書いてある数「5」と「6」を掛けた値=30を書いた積み木を乗せます。
今:[4, 30]
次は「+」なので、「
」と同様に、上2つを消し、それらを足した値=34と書かれた積み木を置きます。
今:[34]
次に、7なので7と書かれた積み木を乗せます。
今:[34, 7]
最後に、「+」と書かれているので、上2つの積み木を消し、足した結果=41が書かれた積み木を置きます。
今:[41]

残ったのは41と書かれた積み木です。シンプルでしょ!
この書き方が逆ポーランド記法、積み木を置くためのところがスタックです。
スタックには、このような計算をする以外にも、変数やリターンアドレス、呼んだ関数の呼び出し時点のベースポインタを置きます。
スタックでは「置く/乗せる」をプッシュ、「消す」をポップといいます。
書いていて世界は逆ポーランド記法で回ればいいのに!と思ってきました。Schemeが好きになってきました。ぜひ逆ポーランド記法を普段使いしてみてください!()

最後まで読んでいただき、ありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?