วันอังคารที่ 8 มีนาคม พ.ศ. 2559

บทที่ 4 สแตก (stack)

                                                               บทที่ 4 สแตก (stack)

โครงสร้างสแตก (Stack structure)
·         สแตก เป็นโครงสร้างข้อมูลอีกรูปแบบหนึ่งที่มีลักษณะของการจัดเก็บข้อมูลที่สามารถ จัดเก็บได้แบบทั้งเรคคอร์ด อาร์เรย์ หรือการจัดเก็บในลักษณะลิงค์ลิสต์
·         แต่ โดยรูปแบบของการทำงานนั้นจะเป็นเหมือนการจัดเก็บหรือบันทึกสมาชิกในลักษณะ ของการพักไว้
·         สแตก เป็นโครงสร้างที่ถูกออกแบบมาให้มีลักษณะเป็นเชิงเส้น สามารถที่จะทำการลบหรือเพิ่มจำนวนสมาชิกเข้ามาในโครงสร้างได้
ลักษณะ ที่สำคัญของสแตก
·         การ นำข้อมูลเข้าสู่สแตก (Insertion บางครั้งเรียกว่า Pushing)
·         การ นำข้อมูลออกจากสแตก (Deletion บางครั้งเรียกว่า Poping)
·         สามารถ กระทำได้เพียงปลายด้านเดียวของโครงสร้างเท่านั้น
·         ข้อมูล ที่เข้าไปเก็บทีหลังสุดจะถูกนำออกมาใช้ก่อน จะเรียกลักษณะแบบนี้ว่า เข้าหลักออกก่อน (Last in First out)
·         การ เข้าถึงข้อมูลในโครงสร้างจะต้องอาศัยพอยเตอร์ ซึ่งทำหน้าที่ชี้ตำแหน่งของข้อมูลตัวสุดท้ายของสแตก
 ลักษณะสำคัญของสแตก
·         โครง สร้างข้อมูลเป็นแบบเชิงเส้น (Linear structure)
·         มี โครงสร้างที่ไม่ตายตัว (dynamic sturcture)
·         นำ ข้อมูลเข้าและดึงข้อมูลออกได้ (push and pop)
·         นำ ข้อมูลเข้าและดึงข้อมูลออกแบบลำดับ
·         มี การจัดการนำเข้าและดึงข้อมูลในตำแหน่ง บนสุด
พื้น ฐานการดำเนินการกับสแตก
1. Push หรือการนำเข้าข้อมูล เป็นการดำเนินการในลักษณะของการเพิ่มข้อมูลในสแตกและต้องระวังปัญหา stack over flow คือไม่มีพื้นที่ว่างสำหรับการเพิ่มข้อมูลเข้าไปในสแตก หรือ สแตกเต็ม
2. Pop หรือการดึงข้อมูลออก  คือ การนำเอาข้อมูลออกจากสแตก ซึ่งการดำเนินการก็จะต้องดำเนินการในตำแหน่ง top หากไม่มีข้อมูลภายในสแตกแล้วยังมีการ pop จะทำให้เกิดข้อผิดพลาด stack under fow
การ ดำเนินการที่สำคัญ 6 ประการ
1.               การดำเนินการสร้างสแตก (create)
2.               การดำเนินการ push
3.               การดำเนินการ pop
4.               การดำเนินการตรวจสอบสแตกว่าง (Empty stack)
5.               การดำเนินการตรวจสอบสแตกเต็ม (Full stack)
6.               การดำเนินการกำหนดล้างสแตก (Clear stack)
การ ประยุกต์ใช้งานสแตกในการแปลงรูป นิพจน์ทางคณิตศาสตร์
รูปแบบนิพจน์ ทางคณิตศาสตร์ แบ่งเป็น 3 ประเภท คือ
1.               นิพจน์ Infix คือ นิพจน์ที่มีเครื่องหมายดำเนินการอยู่กึ่งกลางตัวถูกดำเนินการ      
2.               นิพจน์ Postfix คือ นิพจน์ที่มีเครื่องหมายดำเนินการอยู่ด้านหลังตัวถูกดำเนินการ
3.               นิพจน์ Prefix คือ นิพจน์ที่มีเครื่องหมายดำเนินการอยู่ด้านหน้าตัวถูกดำเนินการ
การ แปลงนิพจน์ Infix เป็น Postfix
สำหรับ การดำเนินการด้านการคำนวณนั้น ในระบบคอมพิวเตอร์ไม่สามารถที่จะจัดลำดับของการคำนวณในรูปแบบของ infix ได้ แต่จะแปลงเป็นนิพจน์ของ postfix ก่อน โดยลักษณะการแปลงจะใช้การเปรียบเทียบความสำคัญของตัวดำเนินการ เครื่องหมายในการคำนวณทั้ง 5 ตัว และหลักการอัลกอริทึมของการแปลงนิพจน์
ลำดับ ความสำคัญของตัวนิพจน์
1.               ^  ยกกำลัง ความสำคัญอันดับแรก
2.               *,/  คูณ,หาร รองจากยกกำลัง
3.               +,-  บวก,ลบ รองจาก ยกกำลัง คูณ หาร
4.               ( )  เครื่องหมายวงเล็บไม่ใช่ตัวดำเนินการแต่ใช้ในการกำหนดลำดับการคำนวณ
หมาย เหตุ  กรณีที่มีลำดับบอกความสำคัญเท่ากันหาไม่มีการกำหนดวงเล็บให้เทียบลำดับความ สำคัญจากซ้ายไปขวายกเว้นเลขยกกำลังความสำคัญจากขวาไปซ้าย
 
การ หาค่าผลลัพธ์จากนิพจน์ Postfix
·         ถ้าเป็นตัวถูกดำเนินการให้ push ลงสแตก
·         ถ้าเป็นตัวดำเนินการให้ pop ตัวดำเนินการออกจากสแตก 2 ตัว แล้วหาค่าผลรวมที่ดำเนินการด้วยตัวดำเนินการนั้น แล้วเก็บผลรวมลงสแตกดำเนินการกับตัวดำเนินการต่อไปจนกว่าจะหมดตัวดำเนินการ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น