30 มี.ค. 2021 เวลา 13:44 • การศึกษา
Data Structures & Algorithms : EP01 - โครงสร้างข้อมูลแบบสแต็ก ( Stack )
Stack
Stack เป็นโครงสร้างการเก็บข้อมูลรูปแบบหนึ่ง ที่สามารถเก็บข้อมูลในรูปแบบเชิงเส้น ( Linear ) และไม่เชิงเส้น ( Non Linear ) มีลักษณะคล้ายกันกับอาร์เรย์ ( Array ) แต่ถูกจำกัดฟังก์ชั่นบางฟังก์ชั่น
Source : https://simple.wikipedia.org/wiki/Stack_(data_structure)
ลักษณะการทำงานของโครงสร้างข้อมูลแสต็ก ( Stack ) เป็นแบบ LIFO : Last-In First-out order หรือก็คือมีช่องทางเพิ่มข้อมูลและเรียกข้อมูลได้เพียงทางเดียว ตัวอย่างการใช้งาน เช่น เกมส์หอคอยฮานอย
Source : https://en.wikipedia.org/wiki/Tower_of_Hanoi
ตัวอย่างโค้ดการทำงานของสแต็ก ( Stack )
Code python : Stack
สร้างคลาส ( Class ) : Stack ซึ่งภายในคลาส ( Class ) มีโครงสร้างและฟังก์ชั่นการทำงาน ดังนี้
- __init__() : เป็นฟังก์ชั่นเริ่มต้นการทำงานเมื่อมีการเรียกใช้งานคลาส ( Class ) : Stack โดยภายในจะสร้างตัวแปร array สำหรับเก็บข้อมูลอาร์เรย์ไว้
- count() : เป็นฟังก์ชั่นสำหรับนับจำนวนข้อมูลที่อยู่ใน array ส่งค่ากลับเป็นข้อมูลชนิดตัวเลขจำนวนเต็ม ( Integer )
- is_empty() : เป็นฟังก์ชั่นสำหรับตราวสอบข้อมูลของ array โดยจะส่งค่ากลับเป็น True เมื่อยังมีข้อมูลใน array และส่งค่า False เมื่อไม่มีข้อมูลใน array
- push() : ฟังก์ชั่นที่ใช้สำหรับการเพิ่มข้อมูลเข้าไปใน array
- pop() : เป็นฟังก์ชั่นที่ใช้สำหรับการรับค่าจาก Stack โดยภายในฟังก์ชั่นจะทำการดึงข้อมูลล่าสุดออกมา และทำการลบค่าล่าสุดนั้นออกจาก array ไปด้วย
- display() : เป็นฟังก์ชั่นแสดงข้อมูล array โดยจะเรียงจากล่าสุดไปหาข้อมูลแรกสุด
Call Stack
เริ่มต้นทำการเรียกใช้งานคลาส ( Class ) : Stack() จากนั้น ทำการเพิ่มข้อมูลเป็นเลข 1,2,3 ตามลำดับ จากนั้นทำการแสดงผลข้อมูล โดยตัวเลขจะเรียงลำดับดังนี้
Push to Stack
จากนั้นทำการดึงข้อมูลจาก Stack โดยการเรียกใช้งานฟังก์ชั่น pop() และทำการแสดงผลข้อมูล ผลลัพธ์ก็คือ ได้เลข 3 ซึ่งเป็นเลขที่มีการเพิ่มเข้าไปหลังสุดออกมา และจะเหลือตัวเลขเพียง 2,1 เท่านั้น
Pop from Stack
สุดท้ายในการทดสอบ โดยการเรียกใช้งานฟังก์ชั่น pop() เพื่อทำการลบข้อมูลภายใน Stack และแสดงค่าจำนวนข้อมูลที่เหลือภายใน Stack ซึ่งจะได้จำนวนคือ 0 และ แจ้งเตือน ValueError: Stack is empty!. ออกมา

ดูเพิ่มเติมในซีรีส์

โฆษณา