การใช้งาน Stack ใน Java

Stack เป็นการจัดเก็บข้อมูลในแบบที่เรียกว่า  LIFO : Last-In First Out (เข้าหลัง ออกก่อน) กองซ้อนๆ กันเป็นชั้นๆ

การ Push เป็นการใส่ข้อมูลเข้าไป ในส่วนบนสุดของ Stack

ภาพจาก : http://www.javamadesoeasy.com/2015/01/stacks.html

 

การ Pop เป็นการลบ ข้อมูลจาก Stack จากส่วนบนสุด

 

เพื่อให้เข้าใจการใช้งานและประโยชน์ของ Stack ลองตัวอย่างตามนี้ครับ

Example 1 : การแปลงเลขฐานสิบให้เป็นฐานสองโดยการใช้ Stack

ผลลัพธ์

 

Example 2 : การใช้ Stack ประมวลผลสมการทางคณิตศาสตร์

เช่า  (1+2)*((3+4)-5)/6)

มี 2 step หลักๆ ครับ

1. วิธีแปลงนิพจน์ Infix เป็น Postfix

2.ประมวลผล ตาม  Postfix ในข้อ 1
ดูการคำนวณ Postfix expression Evaluation

สร้าง class MathSolve ประกอบไปด้วย
Method infixToPostfix  แปลงจากสมการคณิตศาสตร์ เป็น posfix expression

 

Method solvePostfix  ใช้สำหรับคำนวณค่า ตาม postfix ที่ได้จาก method infixToPostfix

 

class MathSolve เต็ม
สร้าง Constructor  กับ getResult สำหรับใช้งาน class ง่ายๆ

 

ลอง run ดูครับ main method

ผลลัพธ์

 

ref:
https://docs.oracle.com/javase/7/docs/api/java/util/Stack.html
http://www.javamadesoeasy.com/2015/01/stacks.html