บทที่ 4 กองซ้อน หรือ สแต็ก (Stack)

กองซ้อน หรือ สแต็ก (Stack)

Stack คือโครงสร้างข้อมูลที่มีลักษณะเรียกกันว่า LiFo (Last in First out)

LiFo (Last in First out) หมายถึง การเข้าทีหลังและนำออกก่อน หรือ เข้าก่อนออกทีหลัง

          ในการใช้ชีวิตประจำวันของเราเองก็มีกระบวนการในลักษณะเช่นเดียวกับ Stack อาทิเช่น กล่อง CD-R แฟ้มเอกสารแบบหนีบ รวมถึงการจัดเรียงของแนวตั้งทุกชนิด ทั้งนี้สังเกตว่าการจะหยิบออกต้องหยิบจากบน(อันที่ใส่ล่าสุด) ลงล่าง (อันที่ใส่ทีหลัง) เสมอๆ หรือก็คือลักษณะของ “กองซ้อน”

          สรุป LiFo จากลักษณะการเพิ่มข้อมูลของ Stack โดยการนำข้อมูลใหม่วางไว้บนสุด และหากต้องการลบข้อมูลหรือนำข้อมูลออก จะนำข้อมูลที่อยู่บนสุดออกก่อน ลักษณะนะการนำข้อมูลเข้าและออก เช่นนี้เราเรียกว่า LIFO (Last in First out) หมายถึง เข้าหลังออกก่อน

ปัญหาของการใช้งานกองซ้อน สแตกเป็นโครงสร้างข้อมูลแบบลีเนียลิตท์และมีข้อจำกัดในการเพิ่มหรือลดข้อมูล โดยจะทำได้เพียงข้อมูลที่อยู่ส่วนบนสุดของ Stack เท่านั้น เราเรียกว่า Top of Stack 

หมายเหตุ ตำแหน่งของท๊อปของสแตกจะอยู่ตำแหน่งบนสุดหรืออยู่ส่วนต้นของ List

การนำข้อมูลเข้าและออกจากกองซ้อน กองซ้อน (Push & Pop)

  • การนำข้อมูลเข้าสู่ Stack เราจะเรียกว่า การ Push คือการเพิ่มข้อมูลให้กับ Stack
  • ส่วนการน าข้อมูลออก Stack จะเรียกว่า การ Pop ออกจาก Stack การ Pop จะเป็นการนำข้อมูลส่วนบนสุดของ Stack เพียงตัวเดียวเท่านั้นออกจาก Stack

การใช้งานของสแตก เนื่องจาก stack เป็นโครงสร้งแบบเชิงเส้น การใช้งานนั้นเราสามารถสร้างสแตกได้ 2 วิธีคือ 

  • การใช้เนื้อที่แบบไดนามิก(Dynamic) ทำได้โดยการใช้ Linked list
  • การใข้เนื้อที่แบบสเตติก(Static) ทำได้โดยการใช้ Array

 


อ้างอิงเอกสารประกอบการสอน

1> เอกสารประกอบการสอนการจัดเรียงแบบกองซ้อน

2> เอกสารประกอบการทบทวนการจัดเรียงแบบกองซ้อน