Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

นิพจน์ Prefix และ Postfix ในโครงสร้างข้อมูล


การเขียนนิพจน์คณิตศาสตร์ (Notation)

นิพจน์คณิตศาสตร์เขียนได้ 3 รูปแบบที่เทียบเท่ากัน:

  • Infix (ปกติ)
  • Prefix
  • Postfix

Prefix Notation (Polish Notation)

Operator อยู่หน้า Operands เช่น +ab เทียบเท่า Infix a + b

Postfix Notation (Reverse Polish Notation)

Operator อยู่หลัง Operands เช่น ab+ เทียบเท่า Infix a + b

ตารางเปรียบเทียบ

ExpressionInfixPrefixPostfix
1a + b+ a ba b +
2(a + b) * c* + a b ca b + c *
3a * (b + c)* a + b ca b c + *
4a / b + c / d+ / a b / c da b / c d / +
5(a + b) * (c + d)* + a b + c da b + c d + *
6((a + b) * c) - d- * + a b c da b + c * d -

การ Parse นิพจน์

Infix ยากต่อการ Parse โดยตรง แปลงเป็น Prefix/Postfix ก่อนแล้วค่อยคำนวณ ต้องคำนึงถึง Operator Precedence และ Associativity

Precedence (ลำดับความสำคัญ)

เมื่อ Operand อยู่ระหว่าง Operator 2 ตัว ใครทำงานก่อน ขึ้นกับ Precedence

a + b * c → a + (b * c)

คูณมี Precedence สูงกว่าบวก ดังนั้น b*c ทำก่อน