โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top of Stack) เรียกว่าตัวชี้สแตก(Stack Pointer) มีรูปแบบเป็น Top(S)
ให้ Y เป็นสแตกเก็บค่าตัวเลขได้ไม่เกิน 6 ตัว Push(‘2’),Push(‘5’),Push(‘3’) Pop(),Push(‘9’), Push(‘0’) Push(‘4’) Push(‘6’),Pop()
เริ่มต้นจากการสร้างสแตก Yขึ้นมาทำงานจำได้สแตกว่าง ไม่มีสมาชิกโดยตัวชี้สแตก Top ยังไม่มีค่า
2 นำค่า 2 เข้ามาเก็บเป็นตัวแรกโดยใช้ Push(‘2’) สแตก Y=[2] ตัวชี้สแตก Top = 2 Top
2 5 นำค่า 5 เข้ามาเก็บเป็นตัวแรกโดยใช้ Push(‘5’) สแตก Y=[5] ตัวชี้สแตก Top = 5 Top
2 5 3 นำค่า 3 เข้ามาเก็บเป็นตัวแรกโดยใช้ Push(‘3’) สแตก Y=[3] ตัวชี้สแตก Top = 3 Top
ต้องการดึงค่าออกมาโดยใช้Pop() 5 2 ต้องการดึงค่าออกมาโดยใช้Pop() สแตก Y=[2,5,3]ตัวชี้สแตก Top = 3 Top
นำค่า 9 เข้ามาเก็บเป็นตัวแรกโดยใช้ Push(‘9’) สแตก Y=[9] ตัวชี้สแตก 2 5 9 นำค่า 9 เข้ามาเก็บเป็นตัวแรกโดยใช้ Push(‘9’) สแตก Y=[9] ตัวชี้สแตก Top = 9 Top
นำค่า 0 เข้ามาเก็บเป็นตัวแรกโดยใช้ Push(‘0’) สแตก Y=[0] ตัวชี้สแตก Top = 0 2 5 9 Top
นำค่า 4 เข้ามาเก็บเป็นตัวแรกโดยใช้ Push(‘4’) สแตก Y=[4] ตัวชี้สแตก Top = 4 2 5 9 4 Top
นำค่า 6 เข้ามาเก็บเป็นตัวแรกโดยใช้ Push(‘6’) สแตก Y=[6] ตัวชี้สแตก Top = 6 2 5 9 4 6 Top
ต้องการดึงค่าออกมาโดยใช้Pop() 2 5 9 4 ต้องการดึงค่าออกมาโดยใช้Pop() สแตก Y=[2,5,9,0,4,6] ตัวชี้สแตก Top = 6 Top
อัลกอริทึมการแปลงนิพจน์แบบ Infix เป็นแบบ Postfix โจทย์ 10+5-(8/2)*3
10+5-(8/2)*3 ผลลัพธ์ Stack
10+5-(8/2)*3 ผลลัพธ์ 10 Stack
10+5-(8/2)*3 ผลลัพธ์ 10 + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 - + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 ( - + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 8 ( - + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 8 / ( - + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 8 2 / ( - + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 8 2 / - + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 8 2 / * - + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 8 2 / 3 * - + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 5 8 2 / 3 * - + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 10 5 8 2 / 3 * + Stack
10+5-(8/2)*3 ผลลัพธ์ 10 10 5 8 2 / 3 * + - Stack
อัลกอริทึมการหาค่าคำตอบจากนิพจน์ Postfix 5 8 2 / 3 * + 10 -
10 5 8 2 / 3 * +- ผลลัพธ์ Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 5 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 8 5 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 2 8 5 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 8 / 2 5 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 4 5 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 3 4 5 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 4 * 3 5 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 5 + 12 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 17 10 Stack
10 5 8 2 / 3 * +- ผลลัพธ์ 12 5 10 Stack