วันจันทร์ที่ 17 สิงหาคม พ.ศ. 2552

DTS 06-04/08/2009

Stack
ลักษณะที่สำคัญของสแตก คือ ข้อมูลที่ใส่หลังสุดจะถูกนำออกมาจากสแตกเป็นลำดับแรกสุด เรียกคุณสมบัตินี้ว่า LIFO (Last In First Out)
กระบวนการในการทำงานของสแตก ประกอบด้วย
1. Push คือ การนำข้อมูลใส่ลงไปในสแตก
2. Pop คือ การนำข้อมูลออกจากส่วนบนสุดของสแตกถ้าสแตกมีสมาชิกเพียง 1 ตัว แล้วถูก Pop ออก จะทำให้สแตกว่าง (Stack Empty) คือ ไม่มีสมาชิกอยู่ในสแตกเลยและถ้าเรา Pop สแตกนี้อีกครั้ง จะทำให้เกิดความผิดพลาดที่เรียกว่า Stack Underflow
การแทนที่ข้อมูลของสแตก ทำได้ 2 วิธี คือ
1. การแทนที่ข้อมูลของสแตกแบบลิงค์ลิสต์ ประกอบด้วย 2 ส่วน คือ
1) Head Node จะประกอบไปด้วย 2 ส่วน คือ top pointer และจำนวนสมาชิกในสแตก
2) Data Node จะประกอบไปด้วยข้อมูล (Data) และพอยเตอร์ ที่ชี้ไปยังข้อมูลตัวถัดไป
2. การแทนที่ข้อมูลของสแตกแบบอะเรย์การดำเนินการเกี่ยวกับสแตก มีดังนี้
1) Create Stack คือ การสร้างสแตก
2) Push Stack คือ การเพิ่มข้อมูลลงไปในสแตก
3) Pop Stack คือ การนำข้อมูลบนสุดออกจากสแตก
4) Stack Top คือ การคัดลอกข้อมูลที่อยู่บนสุดของสแตก โดยไม่มีการลบข้อมูลออกจากสแตก
5) Empty Stack คือ การตรวจสอบการว่างของสแตก เพื่อป้องกัน Stack Underflow
6) Full Stack คือ การตรวจสอบว่าสแตกเต็มหรือไม่ เพื่อป้องกัน Stack Overflow
7) Stack Count คือ การนับจำนวนสมาชิกในสแตก
8) Destroy Stack คือ การลบข้อมูลทั้งหมดที่อยู่ในสแตก
การประยุกต์ใช้สแตก นำไปใช้ในงานด้านปฏิบัติการของคอมพิวเตอร์ที่ต้องการเก็บข่าวสารอันดับแรกสุดไว้ใช้หลังสุด เช่น โปรแกรมแปลภาษา การคำนวณนิพจน์ทางคณิตศาสตร์ และรีเคอร์ชั่น (Recursion)
โดยทั่วไปนิพจน์ทางคณิตศาสตร์สามารถเขียนได้ 3 รูปแบบ คือ
1.นิพจน์ Infix นิพจน์รูปแบบนี้ operator จะอยู่ตรงกลางระหว่างตัวถูกดำเนินการ 2ตัว
2.นิพจน์ Postfix นิพจน์รูปแบบนี้ จะต้องเขียนตัวถูกดำเนินการตังที่ 1 และ 2 ก่อน แล้วตามด้วยoperator
3.นิพจน์ Prefix นิพจน์รูปแบบนี้ จะต้องเขียน operatorก่อนแล้วตามด้วยตัวถูกดำเนินการตัวที่ 1และ 2

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

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