Stack นั้นเป็นโครงสร้างของฐานข้อมูลในลักษณะของ Linear List ซึ่งจะมีลักษณะคล้ายกับของ Queue จะมีความแตกต่างกันตรงที่ตัวชี้วัดหรือกระบวนการทำงานายในเช่น การทำงานในการดึงข้อมูลเข้าและออกของ Stack นั้นจะมีลักษณะเป็นแบบ LIFO ( Last In First Out ) หรือก็คือข้อมูลไหนที่ได้ทำการนำเข้าฐานข้อมูลเป็นอันแรกจะต้องออกจากฐานข้อมูลเป็นอันสุดท้ายนั่นเอง Stack นั้นจะมีลักษณะของโครงสร้างเป็นแบบชั้นๆ ซึ่งการเข้าออกของ ฐานข้อมูลจะต้องเข้าและออกทางเดียวกันนั่นเองทำให้ Stack นั้นจะมีตัวชี้วัดอยู่ด้านบนหรือที่เรียกกันว่า ( top )
ภาพตัวอย่างของ Stack การทำงานของ Stack จะประกอบไปด้วย 3 กระบวนการดังนี้
1. Push คือ การนำเอาข้อมูลไปใส่ไว้ใน Stack โดยจะทับซ้อนกันเรื่อยๆจนกว่า Stack จะเต็มนั่นเองโดยก่อนที่จะทำการ Push ข้อมูลลงไป top จะต้องดูก่อนว่าเนื้อที่ภายใน Stack นั้นเต็มหรือไม่โดยเมื่อ Stack นั้นเต็มจะหมายถึงว่า top นั้นได้ชี้ที่เนื้อที่บนสุดของ Stack แล้วและจะไม่สามารถทำการ Push ข้อมูลลงไปใน Stack ได้อีก
ตัวอย่างโค้ดในการ Push
โค้ด: เลือกทั้งหมด
Procecdre push(var S: stack; X : itemtype);
Begin
If top > = upperbound then Writeln('Stack Full')
Else
Begin
Top := top +1;
S[top] := X;
End;
End;
ตัวอย่างโค้ดของการ Pop
โค้ด: เลือกทั้งหมด
Function Pop (VarS: stack) : itemtype;
Begin
If empty(s) Then Writeln('Stack Empty')
Else Begin
Pop := S[top];
Top := top -1;
End;
End;
3. Empty คือ การว่างของ Stack หรือก็คือถ้าเรากำหนดให้ S เป็น Stack แล้วมีการใช้คำสั่ง empty(S) โดยมีเงื่อนไขว่าถ้า Stack นั้นว่าง จะส่งผลเป็นจริง (TRUE) แต่ถ้า Stack นั้นไม่ว่างก็จะส่งผลเป็นเท็จ (FALSE) นั่นเอง
อ้างอิง : piyapan-aod.blogspot.com