Thuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tốThuật toán Trung tố, hậu tố, tiền tố
Chuyển đổi Trung tố(Infix) sang Hậu tố(Postfix) Chuyển đổi từ trung tố sang hậu tố ” ví dụ cổ điển cấu trúc liệu ngăn xếp Ngăn xếp sử dụng để chuyển đổi biểu thức trung tố cho thành biểu thức hậu tố tương ứng Toán tử : Toán tử ký hiệu hướng dẫn máy tính thực tác vụ đơn giản đơn lẻ Ví dụ toán tử bao gồm + (Cộng), – (Phép trừ), * (nhân),… nhiều toán tử khác Toán hạng : Toán hạng giá trị biến mà tốn tử thực nhiệm vụ Ví dụ Toán hạng bao gồm “a”, “b”, 23, 12, nhiều Các bước chuyển đổi biểu thức trung tố thành hậu tố Quét biểu thức trung tố hợp lệ từ trái sang phải Khởi tạo ngăn xếp ký tự trống chuỗi hậu tố trống Nếu ký tự quét tốn hạng, thêm vào chuỗi hậu tố Nếu ký tự quét dấu ngoặc đơn mở, đẩy vào ngăn xếp Nếu ký tự quét dấu ngoặc đơn đóng, bật tất ký tự ngăn xếp nối vào cuối chuỗi hậu tố xuất dấu ngoặc đơn mở Bật dấu ngoặc mở Nếu ký tự qt Tốn tử ngăn xếp khơng trống, so sánh mức độ ưu tiên ký tự với phần tử đầu ngăn xếp Nếu phần tử Ngăn xếp có mức độ ưu tiên cao ký tự quét, bật ngăn xếp, không đẩy ký tự quét vào ngăn xếp Lặp lại bước ngăn xếp không trống ngăn xếp ưu tiên ký tự Toán tử ( + * / % Mức ưu tiêu 2 3 Lặp lại bước từ đến tất ký tự quét Nếu ngăn xếp trống, trả chuỗi hậu tố 10 Ngược lại, lấy phần tử ngăn xếp thêm vào chuỗi hậu tố, sau trả chuỗi hậu tố Ví dụ (Chuyển đổi Infix sang Postfix): P = (a+(b*c)/(d-e)) = abc*de-/ + Thuật toán: #include #include using namespace std; class stack { string item; int top; public: stack() { top=-1; } void push(char ch) { top++; item[top]=ch; } char pop() { if(isempty()) { cout