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

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

การ ประยุกต์ใช้ Stack 1) ใช้เรียก Function ใน บาง ภาษา n = 10; printf(“%d %d”, n, n++); //++n หรือ ++n, n 2) Recursive การเรียก function ตัวมันเอง เช่น.

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


งานนำเสนอเรื่อง: "การ ประยุกต์ใช้ Stack 1) ใช้เรียก Function ใน บาง ภาษา n = 10; printf(“%d %d”, n, n++); //++n หรือ ++n, n 2) Recursive การเรียก function ตัวมันเอง เช่น."— ใบสำเนางานนำเสนอ:

1 การ ประยุกต์ใช้ Stack 1) ใช้เรียก Function ใน บาง ภาษา n = 10; printf(“%d %d”, n, n++); //++n หรือ ++n, n 2) Recursive การเรียก function ตัวมันเอง เช่น N! หรือสมการ fibunacy ( กบโดดบ่อ ) f n = f n-2 + f n-1

2 การ ประยุกต์ใช้ Stack Factorial(N) { if (N=1) return (1); else return (N * Factorial(N-1)); } 3) Infix & Postfix Notation Infix : 1) A + B 2) A + B * C

3 การ ประยุกต์ใช้ Stack Postfix : 1) A B + 2) A B C * + ขั้นตอนการดำเนินการ ( ด้วยมือ ) 1) A + B * C A + [ BC* ] A B C * + 2) (A + B) * (C-D) / E * P – 1 [ AB+ ] * [ CD- ] / E * P – 1

4 การ ประยุกต์ใช้ Stack [ AB+CD-* ] / E * P – 1 [ AB+CD-* E/ ] * P – 1 AB + CD-* E / P * 1- Home Work 1) A+B*C/(E-F*G**2)-D 2) – A^B-1/(G+P)*(R+1) >10 || A 3) !(A && !(B E)) || F

5 การเปลี่ยน Infix เป็น Postfix โดยใช้ Stack ศัพท์ที่ควรรู้ - Priority : อภิสิทธ์, ศักดินา, สิทธิ์, ความสำคัญ - In coming Priority (ICP) - In stack Priority (ISP) - Operator : + - * / ^ - Operand : ตัวแปร หรือ ค่าคงที่ เช่น A, B, 5 หลักการ 1. ถ้าเป็น Operand ใส่ลงใน Postfix เลย 2. ถ้าเป็น Operator และ ICP>ISP ใส่ลงใน Stack

6 การเปลี่ยน Infix เป็น Postfix โดยใช้ Stack มิเช่นนั้น Pop ออก และไปต่อที่ Postfix จนกว่าจะเป็น จริง หรือ หมด ; ถ้าเป็น ‘)’ Pop ออก และนำไปต่อที่ Postfix จนกว่าจะเจอ ‘(‘ ก็ Pop ออกแล้วโยนทิ้งไปเลย 3. ถ้าหมด Infix, ให้ Pop ออก จาก Stack แล้วนำไปต่อที่ Postfix จนกว่าจะหมด 4. ข้อสังเกต - การ Implement ยังคงใช้ Array - ถ้า Pop ออกเป็น ‘(’ ไม่ ต้องนำไปต่อ

7 Symbol ISP ICP ( 0 6 ~ (-) 5 5 ^ (**) 3,4 4 * 2 2 / ) - - Priority

8 การเปลี่ยน Infix เป็น Postfix โดยใช้ Stack ** Symbol หรือเรียกว่า Token เป็น Char. ที่ฉีกออกจาก String ใน Infix Ex A + B * C เป็น Infix ถูกเก็บ ไว้ใน Array หรือ String จงแปลงให้เป็น Postfix. Token Operator Operand (Postfix) Stack A A B A B + * * + *

9 การเปลี่ยน Infix เป็น Postfix โดยใช้ Stack Token Operator Operand (Postfix) Stack C A B C + * หมด Pop Stack จนหมด สุดท้ายจะได้ A B C * + *** - Stack, Infix, Postfix : Implement ด้วย Array - Operand ในที่นี้ใช้เพียง 1 character

10 การ ประยุกต์ใช้ Stack การบ้าน จงแปลง Infix เป็น Postfix โดยอาศัย Stack 1) (A + B)/C^3 2) - A * D + E / F – P 3) A + B ^ 2 / F 4) –A * (B – D / F ^ (H + W)) Algorithm การแปลง Infix ให้เป็น Postfix ดูได้จากอีก Slide

11 การ ประยุกต์ใช้ Stack การคิดค่าของนิพจน์ (Expression) 1) จาก Infix แปลงเป็น Postfix 2) Postfix จะอยู่ในรูป String ฉีกมาที ละ Token จากซ้ายไปขวา 3) ถ้าเป็น Operand ตรวจดูว่ามีค่าใน ตารางหรือยัง ถ้ายังให้รับค่า แล้วใส่ลง ใน Stack ตัวเลข (Stack คนละอันกับ Stack อันก่อน )

12 การ ประยุกต์ใช้ Stack การคิดค่าของนิพจน์ (Expression) ( ต่อ ) 4) ถ้าเป็น Operator ให้ Pop มาสองค่า จาก Stack แล้วนำมา Operate กัน ตามเครื่องหมาย ( ค่าบนอยู่ด้านขวา ) ยกเว้น เครื่องหมาย ‘~’ Pop มาค่าเดียว แล้วคูณด้วย –1, นำผลลัพธ์ใส่กลับเข้า Stack 5) ทำไปเรื่อย ๆ จนหมด String ของ Postfix จะได้ผลลัพธ์ สุดท้าย ที่ก้น Stack

13 Exam infix : A + B * C จะได้ Postfix : A B C * + การ ประยุกต์ใช้ Stack Token Op. Operand Stack A A ( รับค่า ) 10 B B ( รับค่า ) 10, 2 C C ( รับค่า ) 10, 2, 3 * * (2*3=6) 10, (10+6=16) 16 *** ผลลัพธ์คือ 16

14 การบ้าน จาก infix : -A - B / A ให้หาค่านิพจน์นี้โดยอาศัย Stack, กำหนดให้ A = 4; B = 20;


ดาวน์โหลด ppt การ ประยุกต์ใช้ Stack 1) ใช้เรียก Function ใน บาง ภาษา n = 10; printf(“%d %d”, n, n++); //++n หรือ ++n, n 2) Recursive การเรียก function ตัวมันเอง เช่น.

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


Ads by Google