Tính biểu thức hậu tố (postfix)

Một phần của tài liệu BÁO cáo CUỐI kỳ TỔNG hợp môn cấu TRÚC dữ LIỆU và GIẢI THUẬT (Trang 38 - 40)

I. Đệ quy

3.2Tính biểu thức hậu tố (postfix)

Sau khi thu được mảng postFix chưa các phần tử của biểu thức hậu tố. Ta lần lượt thực hiện các bước sau để tính giá trị của biểu thức.

Bước 1: Duyệt lần lượt các phần tử của mảng (từ trái sang phải), gọi x là phần tử đọc được

 Nếu x là tốn hạng thì đưa vào Stack.

 Nếu x là tốn tử thì pop 2 phần tử đầu tiên ở đỉnh Stack để thực hiện phép toán tương ứng, sau khi thu được kết quả thì push vào Stack. Bước 2: Lặp lại bước 1 cho đến khi tính hết các phần tử của biểu thức, lúc này phần tử duy nhất còn lại ở đỉnh Stack chính là giá trị của biểu thức cần tính.

postFix X Stack Mơ tả

-

10 2 9 1 - * 3 + + 1 3 /

- 2 10 2 2 là toán hạng nên đưa vào Stack

10 2 9 1 - * 3 + + 1 3 /

- 9 10 2 9 9 là toán hạng nên đưa vào Stack

10 2 9 1 - * 3 + + 1 3 /

- 1 10 2 9 1 1 là toán hạng nên đưa vào Stack 10 2 9 1 - * 3 + + 1 3 /

- - 10 2 8 Vì – là tốn hạng nên pop 9 và 1 rađể thực hiện phép tính, kết quả thu được là 8 sẽ được đưa vào lại Stack 10 2 9 1 - * 3 + + 1 3 /

- * 10 16 Vì * là tốn hạng nên pop 2 và 8 rađể thực hiện phép tính, kết quả thu được là 16 sẽ được đưa vào lại Stack

10 2 9 1 - * 3 + + 1 3 /

- 3 10 16 3 3 là toán hạng nên đưa vào Stack

10 2 9 1 - * 3 + + 1 3 /

- + 10 19 Vì + là tốn hạng nên pop 16 và 3 rađể thực hiện phép tính, kết quả thu được là 19 sẽ được đưa vào lại Stack

10 2 9 1 - * 3 + + 1 3 /

- + 29 Vì + là tốn hạng nên pop 10 và 19ra để thực hiện phép tính, kết quả thu được là 29 sẽ được đưa vào lại Stack

10 2 9 1 - * 3 + + 1 3 /

- 1 29 1 1 là toán hạng nên đưa vào Stack

10 2 9 1 - * 3 + + 1 3 /

- 3 29 1 3 3 là toán hạng nên đưa vào Stack

10 2 9 1 - * 3 + + 1 3 /

- / 29 1/3 Vì / là tốn hạng nên pop 1 và 3 rađể thực hiện phép tính, kết quả thu được là 1/3 sẽ được đưa vào lại Stack

10 2 9 1 - * 3 + + 1 3 /

- - 86/3 Vì - là tốn hạng nên pop 29 và 1/3ra để thực hiện phép tính, kết quả thu được là 86/3 sẽ được đưa vào lại Stack

Sau khi tính hết các phần tử của biểu thức postFix ta thu được kết quả của biểu thức: 10 + (2 * (9 – 1) + 3) – 1/3 là 86/3

IV. Cấu trúc dữ liệu Danh sách và Cây

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu BÁO cáo CUỐI kỳ TỔNG hợp môn cấu TRÚC dữ LIỆU và GIẢI THUẬT (Trang 38 - 40)