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

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


วิธีเขียนนิพจน์เลขคณิตเรียกว่าสัญกรณ์ นิพจน์เลขคณิตสามารถเขียนได้สามรูปแบบที่แตกต่างกันแต่เทียบเท่า กล่าวคือ โดยไม่ต้องเปลี่ยนสาระสำคัญหรือผลลัพธ์ของนิพจน์ สัญกรณ์เหล่านี้คือ –

  • สารบัญ

  • คำนำหน้า

  • Postfix

สัญกรณ์ infix เป็นสัญกรณ์ปกติที่เราใช้ในขณะที่เขียนนิพจน์ทางคณิตศาสตร์ที่แตกต่างกัน สัญกรณ์ Prefix และ Postfix ต่างกันมาก

สัญกรณ์คำนำหน้า

ในสัญกรณ์นี้ โอเปอเรเตอร์คือนำหน้า ตัวถูกดำเนินการ เช่น ตัวถูกดำเนินการเขียนก่อนตัวถูกดำเนินการ ตัวอย่างเช่น +ab . ซึ่งเทียบเท่ากับสัญกรณ์ infix a + b . สัญกรณ์คำนำหน้าเรียกอีกอย่างว่า สัญกรณ์โปแลนด์ .

สัญกรณ์หลังการแก้ไข

รูปแบบสัญกรณ์นี้เรียกว่า Reversed Polish Notation . ในรูปแบบสัญกรณ์นี้ โอเปอเรเตอร์คือ postfixed ไปยังตัวถูกดำเนินการ เช่น ตัวดำเนินการถูกเขียนตามหลังตัวถูกดำเนินการ ตัวอย่างเช่น ab+ . ซึ่งเทียบเท่ากับสัญกรณ์ infix a + b .

ตัวอย่าง

ไม่มีนิพจน์ Infix Notation สัญลักษณ์นำหน้า สัญกรณ์ Postfix
1 a + b + a b a b +
2 (a + b) * c * + a bc a b + c *
3 a * (b + c) * a + bc a bc + *
4 a / b + c / d + / a b / c d a b / c d / +
5 (a + b) * (c + d) * + a b + c d a b + c d + *
6 ((a + b) * c) - d - * + a b c d a b + c * d -

การแยกวิเคราะห์นิพจน์

ดังที่เราได้กล่าวไปแล้ว ไม่ใช่วิธีที่มีประสิทธิภาพมากในการออกแบบอัลกอริธึมหรือโปรแกรมเพื่อแยกวิเคราะห์สัญกรณ์ infix แต่ก่อนอื่น สัญกรณ์ infix เหล่านี้จะถูกแปลงเป็น postfix หรือ prefix notation จากนั้นจึงคำนวณ

ในการแยกวิเคราะห์นิพจน์ทางคณิตศาสตร์ เราจำเป็นต้องดูแลลำดับความสำคัญของตัวดำเนินการและการเชื่อมโยงด้วย

ความสำคัญ

เมื่อตัวถูกดำเนินการอยู่ระหว่างตัวดำเนินการที่แตกต่างกันสองตัว ซึ่งตัวดำเนินการใดจะรับตัวถูกดำเนินการก่อน จะถูกตัดสินโดยลำดับความสำคัญของตัวดำเนินการมากกว่าตัวดำเนินการอื่นๆ ตัวอย่างเช่น –

𝑎 + 𝑏 ∗ 𝑐 → 𝑎 + (𝑏 ∗ 𝑐)

เนื่องจากการดำเนินการคูณมีความสำคัญมากกว่าการบวก ดังนั้น b * c จะถูกประเมินก่อน ตารางลำดับความสำคัญของตัวดำเนินการจะมีให้ในภายหลัง