CẤU TRÚC NGĂN XẾP & HÀNG

Một phần của tài liệu Giáo trình Phân tích thiết kế thuật toán (Nghề Lập trình máy tính): Phần 2 - Tổng cục dạy nghề (Trang 69 - 72)

II. Một số phương pháp nén dữ liệu

CẤU TRÚC NGĂN XẾP & HÀNG

Ứng dụng ngăn xếp (Stack) và hàng (Queue) để viết chương trình biến đổi biểu thức trung tố thành tiền tố và hậu tố.

Viết chương trình tính giá trị của biểu thức tiền tố và hậu tố. Yêu cầu chi tiết:

1. Viết các khai báo cần thiết để cài đặt một Stack, một Queue. 2. Viết thủ tục khởi tạo một Stack rỗng.

3. Viết hàm kiểm tra Stack rỗng.

4. Viết thủ tục thêm một phần tử vào Stack. 5. Viết thủ tục xóa một phần tử khỏi Stack.

6. Viết chương trình con lấy nội dung của phần tử tại đỉnh của Stack. 7. Viết thủ tục khởi tạo một Queue rỗng.

8. Viết hàm kiểm tra Queue rỗng.

9. Viết thủ tục thêm một phần tử vào Queue. 10. Viết thủ tục xóa một phần tử khỏi Queue.

11. Viết chương trình con lấy nội dung của phần tử tại đỉnh của Queue. 12. Viết chương trình con đổi biểu thức từ dạng trung tố sang dạng tiền tố. 13. Viết chương trình con đổi biểu thức từ dạng trung tố sang dạng hậu tố. 14. Viết chương trình con tính giá trị của biểu thức tiền tố.

15. Viết chương trình con tính giá trị của biểu thức hậu tố.

Procedure HAUTO (BT: Biểu thức trung tố ; Var HT: Hàng chứa biểu thức hậu tố sau khi đổi }

Begin

MakeNullS(S);{ Tạo một Stack rỗng }

MakeNullQ(S); { Tạo một Queue rỗng } x = Phần tử đầu tiên trong biểu thức trung tố While chưa xét hết biểu thức trung tố do Begin

If x = '(' then Push (x,S) { thêm x vào Stack } If x = ')' then

Begin

While (Not Empty(S)) and (Top(S)<> '(') do Begin

Y:= Top (S); EnQueue(y,Q); {Thêm Y vào hàng} Pop(S); {xóa phần tử tại đỉnh Stack}

End;

If EmptyS(S) then báo lỗi Stack rỗng Else Pop(S) { xóa phần tử tại đỉnh Stack } End; { If }

If < x là một toán tử > then

If EmptyS(S) then Push (x,S) {thêm x vào Stack} Else Begin While(Uutien(Top(S))<=Uutien(x))and (Top(S)<>'(') do Begin Y:= Top(S); Enqueue(Y,Q); Pop(S); End; Push(x,S); End; If < x là một toán hạng > then EnQueue(x,Q);

X = phần tử kế tiếp trong biểu thức trung tố End; { While }

While Not EmptyS(S) do Begin

Y:= Top(S); Enqueue(Y,Q); Pop(S);

Phân tích thiết kế thuật tốn

End; End; { Thủ tục }

Trong đó hàm Uutien trả về thứ tự ưu tiên của các toán tử như sau:

Toán tử (,) * , / + , -

Bài thực hành số 4

Một phần của tài liệu Giáo trình Phân tích thiết kế thuật toán (Nghề Lập trình máy tính): Phần 2 - Tổng cục dạy nghề (Trang 69 - 72)

Tải bản đầy đủ (PDF)

(77 trang)