• ベストアンサー

Javaについて教えてください!

このJavaのプログラミング問題の答えが青線のようになる理由を簡単に教えてほしいです

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.2

サンプルコードを拝見するに、 スタックっちゅうデータ構造を実現してるみたいやね。 スタックっちゅうのは「後入れ先出し(LIFO:Last In First Out)」っていうのを実現するためのデータ構造で、 実生活でいうたら、そうやね、積ん読みたいなんを想像したらええんとちゃうかな? 積ん読って、取り出すときはいちばん上に積んだ本(要は最後に積んだ本) から取り出すやろ?そういうこっちゃねん。 で、サンプルコードの話やけど、 pushっていうんはスタックに格納するための関数、 popっていうんはスタックから取り出すための関数や。 で、スタックに AAA BBB CCC DDD EEE の順に格納してるから、 スタックの一番下にあるんがAAA そっから上へ向かって、順に BBB, CCC, DDD, EEEの順に格納しとるから、 EEEがスタックのいちばん上にあるねん。 それで、popでスタックから2回取り出しとるわけで、 その順番はいちばん上にあるEEE, その次に上にあるDDDの順、っていうわけや。 そやから、出力は EEE DDD っていう風になるねん。 ついでに言うとくと、スタックと対極にあるデータ構造をキュー(queue)っていうて、これは先入れ先出し(FIFO:First In First Out)の代表やね。実生活でいうと、 銀行でATMの利用を待ってる順番とか スーパー・コンビニなんかでレジ待ちしている順番を 思い浮かべたらええと思うわ。なんでかっていうたら、 通常、そういう行列って、先に並んだ人から処理されてくやろ?割り込みとかがなかったら。

rinchomu
質問者

お礼

分かりやすくありがとうございます🙏🏻勉強になりました!

その他の回答 (2)

回答No.3

PUSH&POPはJavaじゃなくても、 事実上すべてのプログラミング言語で使うから 覚えておいていいかも! 一言で言えば「積み木」 1,2,3,4,5って詰めば、 最初に取れるのは「5」だよね?って話。 もし、3を取りたいなら、4,5をどかさないといけない! つまり、縦一直線に山を作ってるのと同じよ! (ちなみ、複雑になると横の山が出来るツリー構造にもなるが) 実生活では、エレベーターと同じ! 急いでエレベーターに乗った人ほど「最後にしか降りれない」 最初に降りるのは「最後に乗った人よね?」 って事と同じよん

  • kjm15986
  • ベストアンサー率27% (26/93)
回答No.1

青線とは?

関連するQ&A