งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

โครงสร้างข้อมูลแบบ กองซ้อน (Stack). ความหมาย โครงสร้างข้อมูลแบบเชิงเส้นที่ประกอบด้วยกลุ่ม ของข้อมูลที่มีลำดับ (An Ordered group of items) ที่มี ลักษณะดังนี้

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "โครงสร้างข้อมูลแบบ กองซ้อน (Stack). ความหมาย โครงสร้างข้อมูลแบบเชิงเส้นที่ประกอบด้วยกลุ่ม ของข้อมูลที่มีลำดับ (An Ordered group of items) ที่มี ลักษณะดังนี้"— ใบสำเนางานนำเสนอ:

1 โครงสร้างข้อมูลแบบ กองซ้อน (Stack)

2 ความหมาย โครงสร้างข้อมูลแบบเชิงเส้นที่ประกอบด้วยกลุ่ม ของข้อมูลที่มีลำดับ (An Ordered group of items) ที่มี ลักษณะดังนี้ การเพิ่มข้อมูลใหม่ในสแตก หรือ การนำข้อมูลออก จากสแตก จะกระทำที่ปลายด้านเดียวกันของสแตก เรียกโครงสร้างแบบนี้ว่า LIFO (Last in first out)

3 ตัวอย่าง โครงสร้างสแตกใน ชีวิตประจำวัน

4 การดำเนินการกับสแตก การเพิ่มข้อมูลลงสแตก เรียกว่า push เช่น push(A) หมายถึงนำ A ใส่ลงสแตก push(N) หมายถึงนำ N ใส่ลงสแตก A Ntop Top เป็นตัวชี้ตำแหน่งของสมาชิกตัวบนสุดของสแตก

5 การดำเนินการกับสแตก ( ต่อ ) การนำข้อมูลออกจากสแตก เรียกว่า pop เช่น pop() หมายถึง นำสมาชิกตัวบนสุดออกจากส แตก A Ntop A ก่อน pop() หลัง pop()

6 การ Implement สแตก Implement ด้วยอาร์เรย์ Implement ลิงค์ลิสต์

7 การ Implement สแตกด้วยอาร์เรย์ ข้อจำกัดของอาร์เรย์ คือ จำนวนสมาชิก จำกัด ตาม ขนาดของอาร์เรย์ เช่น ถ้าใช้อาร์เรย์ขนาด 10 ช่อง แทน สแตก จำนวนสมาชิกสูงสุดของ สแตกจะถูกจำกัดแค่ 10 ตัว ไม่สามารถใส่ตัวที่ 11, 12 ลงไปได้ ซึ่งจะส่งผลต่อ อัลกอริทึม push ในการเพิ่มข้อมูล ลงสแตก ส่วนการนำข้อมูลออกจากสแตก ถ้าสแตกว่าง ( อาร์เรย์ยังไม่มีข้อมูล ) ก็จะไม่สามารถ pop ได้ เพราะไม่มีข้อมูลให้ pop

8 อัลกอริทึมในการ push 1. ตรวจสอบว่าสแคกเต็มหรือไม่ ถ้าสแตกเต็ม แจ้งข้อความ stack overflow ถ้าสแตกไม่เต็ม ทำข้อ 2 2. เพิ่มค่า top แล้วนำข้อมูลใส่ในตำแหน่งที่ top ของอาร์เรย์

9 ตัวอย่าง ฟังก์ชัน push ในภาษา C void push(stack *ps, int x) { if(ps->top == STACKSIZE-1) { printf(“%s”,”stack overflow”); exit(1); } ps->items[++(ps->top)]=x; }

10 อัลกอริทึมในการ pop 1. ตรวจสอบว่า สแตก ว่างหรือไม่ ถ้าสแตกว่าง ให้แสดงข้อความ stack underflow ถ้าสแตกไม่ว่าง ทำข้อ 2 2. ดึงสมาชิกตัวบนออก แล้วลดค่าตำแหน่ง top ลง 1

11 ตัวอย่าง ฟังก์ชัน pop ในภาษา C int pop(stack *ps) { if (ps->top == -1) { printf(“$s”,”stack under flow”); exit(1); } return (ps->items[ps->top--]); }

12 นิพจน์ infix, prefix, postfix นิพจน์ infix เป็นนิพจน์ที่ operator อยู่ระหว่าง operand เช่น A+B-C นิพจน์ prefix เป็นนิพจน์ที่ operator อยู่หน้า operand เช่น -+ABC นิพจน์ postfix เป็นนิพจน์ที่ operator อยู่หลัง operand เช่น AB+C-

13 การแปลงนิพจน์ infix เป็นนิพจน์ prefix ให้แปลงตามลำดับค่า Precedence ของ operator โดย นำเครื่องหมายของ operator ไปวางหน้าคู่ของ operand ที่กระทำกัน เช่น A+B แปลงเป็นนิพจน์ Prefix ได้ +AB A+B*C แปลงเป็นนิพจน์ Prefix ได้ + A*BC

14 การแปลงนิพจน์ infix เป็นนิพจน์ postfix ให้แปลงตามลำดับค่า Precedence ของ operator โดย นำเครื่องหมายของ operator ไปวางหลังคู่ของ operand ที่กระทำกัน เช่น A-B+C แปลงเป็นนิพจน์ postfix ได้ AB- C+

15 ตัวอย่าง จงแปลงนิพจน์ ให้อยู่ในรูปนิพจน์ prefix และ postfix (A-B*C)/D+E^F-G

16 การนำสแตกมาใช้ในการแปลงนิพจน์ infix เป็นนิพจน์ postfix 1. ถ้าค่า input เป็น operand ให้นำค่าไปเป็น Output 2. ถ้าค่า input เป็น operator ( เครื่องหมายคณิตศาสตร์ ) ให้ พิจารณาดังนี้ 2.1 ถ้า สแตกว่าง ให้นำ operator ใส่สแตก 2.2 ถ้า สแตกไม่ว่าง ให้นำ operator ไปเปรียบกับค่า operator ตัวบนในสแตก ถ้าค่า operator ที่เป็น input มีค่า precedence น้อยกว่าหรือเท่ากับค่า operator ตัวบนของส แตก ให้ดึง operator ตัวบนในสแตกไปเป็น output แล้ว เปรียบเทียบกับ operator ในสแตกตัวถัดไป แล้ว เปรียบเทียบเช่นเดียวกับก่อนหน้านี้ แต่ถ้า operator ที่เป็น input มีค่า precedence มากกว่าค่า operator ตัวบนของส แตก ให้นำค่า operator ที่เป็น input ใส่สแตก

17 การนำสแตกมาใช้ในการแปลงนิพจน์ infix เป็นนิพจน์ postfix ( ต่อ ) 3. ถ้า input เป็น ( ให้ใส่ลงสแตก 4. ถ้า input เป็น ) ให้ดึงข้อมูลออกจากสแตกทีละตัว ไปเป็น output จนกระทั่งพบ ( ในสแตก ให้ดึง ออกมาทิ้งไป ไม่ต้องไปใส่เป็น output 5. ถ้า input หมด และสแตกยังมีข้อมูลอยู่ ให้ดึงข้อมูล ออกจาก stack ที่ตัวไปเป็น output จนกระทั่งสแตก ว่าง

18 จงแปลงนิพจน์ ให้อยู่ในรูปนิพจน์ prefix และ postfix (A-B*C)/D+E^F-G

19 การแปลงนิพจน์ pre fix เป็นนิพจน์ infix ให้พิจารณา คู่ operand ที่กระทำกัน แล้วนำ operator หน้า operand คู่นั้น ไปวางไว้ระหว่าง operand คู่นั้น แล้วพิจาณา นำ operand คู่ถัดไป แล้วทำ เช่นเดียวกัน +AB แปลงเป็น infix ได้ A+B +A*BC แปลงเป็น infix ได้ +A(B*C) =A+(B*C)

20 การแปลงนิพจน์ post fix เป็นนิพจน์ infix ให้พิจารณา คู่ operand ที่กระทำกัน แล้วนำ operator หลัง operand คู่นั้น ไปวางไว้ระหว่าง operand คู่นั้น แล้วพิจาณา นำ operand คู่ถัดไป แล้วทำ เช่นเดียวกัน ABC/+ แปลงเป็นนิพจน์ infix ได้ A(B/C)+ = A+B/C

21 การหาค่านิพจน์ postfix เช่น กำหนด A=10, B=5, C=2 จงหาค่าของนิพจน์ ABC-+


ดาวน์โหลด ppt โครงสร้างข้อมูลแบบ กองซ้อน (Stack). ความหมาย โครงสร้างข้อมูลแบบเชิงเส้นที่ประกอบด้วยกลุ่ม ของข้อมูลที่มีลำดับ (An Ordered group of items) ที่มี ลักษณะดังนี้

งานนำเสนอที่คล้ายกัน


Ads by Google