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