Cu trúc d liu & gii thut CNTT
G×F
Bài thc hành s 3
Stack - Queue
Bài tp 3.1:
Viết chương trình tính giá tr biu thc trung t theo các yêu cu sau:
1. Nhp biu thc trung t: toán hng, toán t và du ngoc
VD: (20+5)/5+(7-3)*100
2. Chuyn biu thc trung t thành hu t (xut ra màn hình)
VD: 20 5 + 5 / 7 3 – 100 * +
3. Tính giá tr ca biu thc hu t
VD: (20+5)/5+(7-3)*100 = 405
Yêu cu:
Sinh viên cài đặt stack dùng danh sách liên kết:
1. Khai báo cu trúc ca phn t trong DSLK dùng làm stack
2. Cài đặt các thao tác: IsEmpty, NewNode, FreeNode, Pop, Push… trên
Stack.
Hướng dn:
1. Chuyn biu thc trung t thành hu t:
Duyt biu thc trung t t trái sang phi
Nếu gp toán hng thì ghi vào chui kết qu
Nếu gp du m ngoc thì push stack
Nếu gp toán t gi là O1 thc hin các bước sau:
Chng nào còn mt toán t O2 đỉnh stack và
độ ưu tiên ca O1 độ ưu tiên O2 thì ly O2 ra
khi stack và ghi vào chui kết qu.
Push O1 stack
1
Cu trúc d liu & gii thut CNTT
Nếu gp du đóng ngoc: thì ly toán t trong stack
ra cho đến khi ly được du m ngoc (lưu ý: pop
du m ngoc ra, nhưng ko xut ra chui kết qu)
Khi đã duyt kết biu thc trung t, ly tt c toán t
trong stack và ghi vào chui kết qu.
2. Tính giá tr biu thc hu t:
Đọc biu thc t trái sang phi
Nếu là toán hng: Push stack
Nếu gp toán t:
Ly 2 toán hng trong stack ra
Tính giá tr ca 2 toán hng đó theo toán t
Push kết qu stack
Khi quá trình kết thúc thì con s cui cùng còn li trong
stack chính là giá tr ca biu thc đó.
Bài tp 3.2:
Bài toán Tháp Hanoi được mô t như sau: cho 3 ct được đánh s ln lượt
là 1, 2 và 3. Có n đĩa được sp theo th t đĩa nh bên trên đĩa ln. Hãy lit
kê các bước thc hin để chuyn tt c các đĩa t ct 1 sang ct 2. Quy lut di
chuyn như sau:
1. Mi bước ch di chuyn 1 đĩa t ct này sang ct khác.
2. Đĩa có bán kính nh luôn sp trên đĩa có bán kính ln.
12 3 1 2 3
Yêu cu:
Viết chương trình nhp vào s đĩa n, thc hin các bước di chuyn các đĩa, mi
bước di chuyn cho biết ct ngun (ct ly đĩa) và ct đích (ct đặt đĩa). Gii thut
di chuyn không đệ quy, dùng stack để cha thông tin tm thi trong quá trình di
chuyn.
2
Cu trúc d liu & gii thut CNTT
Sinh viên cài đặt stack dùng danh sách liên kết, mi node phn info cha 3
thông tin {s đĩa di chuyn, ct ngun, ct đích}.
Hướng dn:
Như chúng ta biết bài toán tháp Hanoi thường được gii bng phương pháp đệ
quy. Tuy nhiên có th gii bng cách dùng stack để kh đệ quy. Để thc hin vic
lưu tr tm trong quá trình di chuyn chúng ta dùng mt stack. Trong đó mi phn
t ca stack này cha các thông tin gm: s đĩa di chuyn (N), ct ngun bt đầu
di chuyn (Nguon) và ct đích là nơi cn di chuyn đến (Dich). đây không cn
lưu ct trung gian vì có 3 ct đánh s là 1, 2 và 3 thì ct trung gian để di chuyn
là: 6 – (Nguon+Dich).
Đầu tiên đưa vào stack thông tin di chuyn {n, 1, 2}, tc là di chuyn n đĩa t
ct 1 sang ct th 2 qua ct trung gian là 6-(1+2) = 3.
Ti mi bước khi ly trong stack ra mt phn t. chúng ta thc hin như sau:
Nếu N = 1: di chuyn đĩa t ct Nguon -> ct Dich
Ngược li (nếu N > 1):
Xác định ct trung gian TrungGian = 6 – (Nguon+Dich)
Push stack thông tin di chuyn {N-1, TrungGian, Dich}
Push stack thông tin di chuyn {1, Nguon, Dich}
Push stack thông tin di chuyn {N-1, Nguon, TrungGian}
Quá trình còn thc hin khi stack khác rng.
Nhn xét: Lưu ý th t khi đưa vào thông tin di chuyn vào stack. Trong phn
trên thông tin {N-1, Nguon, TrungGian} được đưa vào stack sau cùng nên chúng
s được ly ra trước tiên, kế đến là thông tin di chuyn {1, Nguon, Dich} và cui
cùng là thông tin di chuyn {N-1, TrungGian, Dich}.
Bài tp 3.3:
Viết chương trình qun lý kho đơn gin thc hin các chc năng sau:
1. Cho phép thêm mt mt hàng vào kho
2. Xut mt mt hàng ra khi kho
3
Cu trúc d liu & gii thut CNTT
3. Xem tt c hàng hoá trong kho
4. Xem mt hàng nào kế tiếp s được xut kho
Yêu cu
1. Cài đặt cu trúc d liu HàngHoá: có các d liu nào lit kê ra
2. Cài đặt mt Queue cha các hàng hoá trong kho
3. Cài đặt các thao tác trên Queue
4. Cài đặt các chc năng theo mô t ca bài tp.
Thi gian làm bài tp 3: t
Ngoài ra sinh viên có th b sung nhng chc năng m rng tùy ý. Tt c các
chc năng sáng to ca sinh viên đều được đánh giá cao!
Mi thc mc email v: vanthienhoang@yahoo.com.vn
G×F
4