วันอังคารที่ 28 กรกฎาคม พ.ศ. 2552

DTS 05-22/07/52

สรุป
สแตค (Stack)
สแตคเป็นโครงสร้างข้อมูลที่มีลักษณะแบบลำดับ (sequential) คือการกระทำกับข้อมูลจะกระทำที่ปลายข้างเดียวกันที่ส่วนปลายสุดของสแตค การกระทำกับข้อมูลของสแตคประกอบไปด้วยการนำเข้าข้อมูลเข้า (PUSH) ที่ส่วนบนสุดของสแตค และการนำข้อมูลออก (POP) ที่ส่วนบนสุดของสแตคเช่นกัน ในการจะ Push ข้อมูลเข้าก็ต้องตรวจสอบด้วยว่าข้อมูลในสแตคเต็มหรือไม่ หากสแตคเต็มก็จะไม่สามารถ Push หรือนำข้อมูลเข้าได้ เช่นเดียวกับการ Pop ข้อมูลออกก็ต้องตรวจสอบด้วยว่ามีข้อมูลอยู่ในสแตคหรือไม่ หากไม่มีข้อมูลอยู่ในสแตคหรือสแตคว่าง (empty stack) ก็ไม่สามารถ pop ได้การนำข้อมูลเข้า-ออก จากสแตค (push , pop) จะมีลักษณะแบบเข้าหลัง ออกก่อน (LIFO : Last In , First Out) คือ ข้อมูลที่เข้าไปในสแตคลำดับหลังสุด จะถูกนำข้อมูลออกจากสแตคเป็นลำดับแรก ยกตัวอย่างการทำงานแบบ LIFO เช่น การวางจานซ้อนกัน รูปแสดงลักษณะของสแตค ที่ประกอบด้วยข้อมูล A , B , C , D และ E มี TOP ที่ชี้ที่สมาชิกตัวบนสุดของสแตค





















ตัวอย่างการทำงานแบบโครงสร้างข้อมูลแบบจัดเรียงกึ่งกลางสแตกที่สามารถเห็นได้ในชีวิตประจำวันทั่วไป ได้แก่

การวางกระดาษซ้อนกันต้องวางกระดาษลงบนกล่องจากล่างสุดที่ละแผ่น และสามารถใส่ได้จนเต็มกล่อง และเมื่อมีการวางกระดาษจนเต็มกล่องแล้ว จะไม่สามารถวางกระดาษซ้อนได้อีกเพราะกล่องมีสภาพเต็ม แต่เมื่อเราจะหยิบกระดาษไปใช้ เราต้องหยิบกระดาษใบบนสุด ซึ่งเป็นกระดาษที่ถูกวางเก็บเป็นอันดับสุดท้ายออกได้เป็นใบแรก และสามารถหยิบออกที่ละใบจากบนสุดเสมอ ส่วนกระดาษที่ถูกวางเก็บเป็นใบแรก จะนำไปใช้ได้ก็ต่อเมื่อนำกระดาษที่วางทับมันอยู่ออกไปใช้เสียก่อน และจะหยิบออกไปใช้เป็นใบสุดท้าย
ด้ายหรือเชือกที่ม้วนลงบนเเกนของด้าย เมื่อเราจะนำไปใช้ เราจะใช้ด้ายด้านบนสุดก่อน ซึ่งเป็นด้ายที่ถูกม้วนเป็นอันดับสุดท้ายออกได้เป็นอันดับแรก และจะใช้จากด้านบนสุดเสมอ ส่วนด้ายที่ถูกม้วนเก็บเป็นอันดับแรก จะนำไปใช้ได้ก็ต่อเมื่อนำด้ายที่วางทับมันอยู่ออกไปใช้เสียก่อน
เกี๊ยวแผ่นที่ใส่ถุงการวางเกี๊ยวซ้อนกันต้องวางเกี๊ยวลงถุงจากล่างสุดที่ละแผ่น และสามารถใส่ได้จนเต็มถุง และเมื่อมีการวางเกี๊ยวจนเต็มถุงแล้ว จะไม่สามารถวางเกี๊ยวซ้อนได้อีกเพราะถุงมีสภาพเต็ม แต่เมื่อเราจะหยิบเกี๊ยวไปใช้ เราต้องหยิบเกี๊ยวแผ่นใบบนสุด ซึ่งเป็นกี๊ยวที่ถูกวางเป็นอันดับสุดท้ายออกได้เป็นเเผ่นแรก และสามารถหยิบออกที่ละเเผ่นจากบนสุดเสมอ ส่วนเกี๊ยวที่ถูกวางเก็บเป็นแผ่นแรก จะนำไปใช้ได้ก็ต่อเมื่อนำเกี๊ยวที่วางทับมันอยู่ออกไปใช้เสียก่อน

ขนมปังเเผ่น ขนมปังที่ใส่ถุงการวางขนมปังซ้อนกันต้องวางขนมปังลงถุงจากล่างสุดที่ละแผ่น และสามารถใส่ได้จนเต็มถุง และเมื่อมีการวางขนมปังจนเต็มถุงแล้ว จะไม่สามารถวางขนมปังซ้อนได้อีกเพราะถุงมีสภาพเต็ม แต่เมื่อเราจะหยิบขนมปังไปใช้ เราต้องหยิบขนมปังแผ่นใบบนสุด ซึ่งเป็นขนมปังที่ถูกวางเป็นอันดับสุดท้ายออกได้เป็นเเผ่นแรก และสามารถหยิบออกที่ละเเผ่นจากบนสุดเสมอ ส่วนขนมปังที่ถูกวางเก็บเป็นแผ่นแรก จะนำไปใช้ได้ก็ต่อเมื่อนำขนมปังที่วางทับมันอยู่ออกไปใช้เสียก่อน
สายยางที่มีเครื่องม้วน เมื่อเราจะนำไปใช้ เราจะใช้สายยางด้านบนสุดก่อน ซึ่งเป็นสายยางที่ถูกม้วนเป็นอันดับสุดท้ายออกได้เป็นอันดับแรก และจะใช้จากสายยางบนสุดเสมอ ส่วนสายยางที่ถูกม้วนเก็บเป็นอันดับแรก จะนำไปใช้ได้ก็ต่อเมื่อนำสายยางที่วางทับมันอยู่ออกไปใช้เสียก่อน
พลาสติกสำหรับห่ออาหารเมื่อเราจะนำไปใช้ เราจะใช้พลาสติกด้านบนสุดก่อน ซึ่งเป็นพลาสติกที่ถูกม้วนเป็นอันดับสุดท้ายออกได้เป็นอันดับแรก และจะใช้จากด้านบนสุดเสมอ ส่วนพลาสติกที่ถูกม้วนเก็บเป็นอันดับแรก จะนำไปใช้ได้ก็ต่อเมื่อนำพลาสติกที่วางทับมันอยู่ออกไปใช้เสียก่อน
เทปใสและกาวสองหน้าเมื่อเราจะนำไปใช้ เราจะใช้จากด้านบนสุดก่อน ซึ่งถูกม้วนเป็นอันดับสุดท้ายออกได้เป็นอันดับแรก และจะใช้จากด้านบนสุดเสมอ ส่วนที่ถูกม้วนเก็บเป็นอันดับแรก จะนำไปใช้ได้ก็ต่อเมื่อนำสิ่งที่วางทับมันอยู่ออกไปใช้เสียก่อน


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

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