Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Biểu thức tiền tố và hậu tố trong cấu trúc dữ liệu


Cách viết biểu thức số học gọi là ký pháp (notation). Biểu thức số học có thể viết dưới 3 ký pháp tương đương: Infix, Prefix, Postfix.

Infix là ký pháp thông thường. Prefix và Postfix khác biệt.

Ký pháp tiền tố (Prefix)

Toán tử đặt trước toán hạng. Ví dụ: +ab. Tương đương infix a + b. Còn gọi là Polish Notation.

Ký pháp hậu tố (Postfix)

Còn gọi Reverse Polish Notation. Toán tử đặt sau toán hạng. Ví dụ: ab+. Tương đương a + b.

Ví dụ

STTInfixPrefixPostfix
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 -

Phân tích biểu thức (Parsing)

Không hiệu quả thiết kế thuật toán parse infix trực tiếp. Thường chuyển infix sang postfix/prefix rồi tính.

Cần quan tâm độ ưu tiên (precedence) và kết hợp (associativity) của toán tử.

Độ ưu tiên

Khi toán hạng giữa hai toán tử khác nhau, toán tử nào lấy trước quyết định bởi độ ưu tiên. Ví dụ:

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

Nhân ưu tiên hơn cộng, nên b*c tính trước. Bảng độ ưu tiên được cung cấp sau.