การทำ Stack เพื่อใช้ในการจัดเรียงข้อมูลที่เข้าออกอย่างมีระเบียบ

หมวดสำหรับแบ่งบันความ รู้ต่างๆ จะมีหมวดย่อยๆ ในหมวดนี้ เช่น php, SQL, XML, CSS

Moderator: mindphp, ผู้ดูแลกระดาน

rangsan
PHP Hero Member
PHP Hero Member
โพสต์: 199
ลงทะเบียนเมื่อ: 30/04/2018 9:44 am

การทำ Stack เพื่อใช้ในการจัดเรียงข้อมูลที่เข้าออกอย่างมีระเบียบ

โพสต์โดย rangsan » 05/05/2018 11:41 am

Stack Algorithms

Stack นั้นเป็นโครงสร้างของฐานข้อมูลในลักษณะของ Linear List ซึ่งจะมีลักษณะคล้ายกับของ Queue จะมีความแตกต่างกันตรงที่ตัวชี้วัดหรือกระบวนการทำงานายในเช่น การทำงานในการดึงข้อมูลเข้าและออกของ Stack นั้นจะมีลักษณะเป็นแบบ LIFO ( Last In First Out ) หรือก็คือข้อมูลไหนที่ได้ทำการนำเข้าฐานข้อมูลเป็นอันแรกจะต้องออกจากฐานข้อมูลเป็นอันสุดท้ายนั่นเอง Stack นั้นจะมีลักษณะของโครงสร้างเป็นแบบชั้นๆ ซึ่งการเข้าออกของ ฐานข้อมูลจะต้องเข้าและออกทางเดียวกันนั่นเองทำให้ Stack นั้นจะมีตัวชี้วัดอยู่ด้านบนหรือที่เรียกกันว่า ( top )

ภาพตัวอย่างของ Stack
Stack.jpg
Stack.jpg (28.13 KiB) เปิดดู 101 ครั้ง


การทำงานของ 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;


2. Pop คือ การดึงข้อมูลออกจาก Stack การนำข้อมูลที่อยู่บนสุดใน Stack หรือที่ชี้ด้วย top ออกจาก Stack จะสามารถ Pop สแตกได้เรื่อย ๆ จนกว่า Stackจะว่าง

ตัวอย่างโค้ดของการ 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
It’s never too late to start again.

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 17 และ บุคคลทั่วไป 0 ท่าน