CẤU TRÚC DỮ LIỆUCẤU TRÚC DỮ LIỆU VÀ GIẢITHUẬT - Pdf 32

CẤU TRÚC DỮ LIỆU
VÀ GIẢI THUẬT
Lý thuyết


Phần 2 ((Chương
g 3 – tiếp)
p)
Ngăn xếp và Hàng đợi
„
„

Ngăn xếp
Hàng đợi

Vũ Anh Dũng - Khoa CNTT

2


Ngăn xếp ADT (Stack ADT)
„

„

Ngăn xếp là một danh sách đặc biệt mà thao
tác thêm (insert) và loại bỏ (delete) chỉ diễn
ra ở 1 đầu.
Ví trí tại đó phép thêm và xóa diễn ra luôn ở
cuối của danh sách và được gọi là top.


Vũ Anh Dũng - Khoa CNTT

5


Cài đặt ngăn xếp
„
„

Có thể sử dụng list hoặc vector
Sử dụng list,
list vector :
„ Thao tác push được thực hiện bằng việc
chèn
hè vào
à cuối
ối danh
d h sách
á h
„ Thao tác pop được thực hiện bằng cách
xóa phần
ầ tử ở cuối
ố danh sách
„ Thao tác top chỉ đơn thuần kiểm tra phần
tử ở cuối danh sách, và trả về giá trị
Vũ Anh Dũng - Khoa CNTT

6




8


Một số ứng dụng –
Cân bằng ký hiệu (Balancing)
„

Kiểm tra các dấu ngoặc trong quá trình
kiểm tra lỗi cú pháp
„
„
„
„

„

„

Tạo một ngăn xếp rỗng.
Đọc các ký tự dấu
Nế ký tự là một
Nếu
ộ ký hiệu
hiệ mở,
ở đặt
đặ nó
ó vào
à trong ngăn
ă xếp.

„

Vũ Anh Dũng - Khoa CNTT

10


Một số ứng dụng –
Biểu thức hậu tố (Postfix Exp)
Xét biểu thức :
4 99 * 1.06
4.99
1 06 + 5.99
5 99 + 6.99
6 99 * 1.06
1 06 =
„ Có thể sử dụng biểu thức Ba Lan dạng hậu
tố như
h sau :
4.99 1.06 * 5.99 + 6.99 1.06 * +
„

Vũ Anh Dũng - Khoa CNTT

11


Một số ứng dụng –
Biểu thức hậu tố (Postfix Exp)
„


Tiếp theo 8 được đNy vào

Bây giờ ‘*’ được nhìn thấy, do vậy 8 và 5
được lấy
ấ ra và 5 * 8 = 40 được đNy
N vào

Vũ Anh Dũng - Khoa CNTT

14


Một số ứng dụng –
Biểu thức hậu tố (Postfix Exp)
„

„

Tiếp theo ‘+’ được nhìn thấy, do vậy 40 và
5 được
ợ lấyy ra và 5 + 40 = 45 được
ợ đNy
y vào

3 được đNy
N vào

Vũ Anh Dũng - Khoa CNTT


thức ở dạng
ạ g chuNn ((được
ợ gọ
gọi theo cách khác
là trung tố - infix) sang dạng hậu tố - postfix
Chúng ta chỉ xét một bài toán nhỏ với các
phép +, *, (, )
Ví dụ : a + b * c + ( d * e + f ) * g
Được chuyển thành a b c * + d e * f + g * +
Vũ Anh Dũng - Khoa CNTT

17


Một số ứng dụng –
Chuyển từ trung tố sang hậu tố
„

Một số quy tắc :
„ Gặp toán hạng : chuyển qua đầu ra
„ Gặp toán tử, hoặc dấu mở ngoặc : đưa
vào stack
„ Toán tử được đưa ra đầu ra sau khi xử lý,
nhưng
h
dấ ngoặc
dấu
ặ thì
hì không
khô



Một số ứng dụng –
Chuyển từ trung tố sang hậu tố
„

Tiếp theo * được đọc. Mục ở đỉnh của ngăn
xếp
p toán tử có q
quyền
y ưu tiên thấp
p hơn so
với *, do vậy không có gì được đưa ra và *
ợ đặt
ặ vào ngăn
g xếp.
p Tiếpp theo,, c được

được
đọc và đưa ra output

Vũ Anh Dũng - Khoa CNTT

20


Một số ứng dụng –
Chuyển từ trung tố sang hậu tố
„


p

Vũ Anh Dũng - Khoa CNTT

22


Một số ứng dụng –
Chuyển từ trung tố sang hậu tố

„

Bây giờ ta đọc ), do vậy ngăn xếp được làm
rỗng cho tới (.
( Chúng ta đưa ra +

Vũ Anh Dũng - Khoa CNTT

23


Một số ứng dụng –
Chuyển từ trung tố sang hậu tố

„

C ối cùng
Cuối
ù


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status