Ứng dụngdụng củacủa StackStack
StackStack thíchthích hợphợp lưulưu trữtrữ cáccác loạiloại dữdữ liệuliệu màmà trìnhtrình tựtự truytruy
xuất
xuất ngượcngược vớivới trìnhtrình tựtự lưulưu trữtrữ
MộtMột sốsố ứngứng dụngdụng củacủa StackStack: :
TrongTrong trìnhtrình biênbiên dịchdịch ( (thơngthơng dịchdịch), ), khikhi thựcthực hiệnhiện cáccác
thủ
thủ tụctục, , StackStack đượcđược sửsử dụngdụng đểđể lưulưu mơimơi trườngtrường củacủa cáccác
thủ
thủ tụctục..
LưuLưu dữdữ liệuliệu khikhi giảigiải mộtmột sốsố bàibài tốntốn củacủa lýlý thuyếtthuyết đồđồ thị
thị ( (nhưnhư tìmtìm đườngđường điđi))
KhửKhử đệđệ quiqui
132
Ứng
Ứng dụngdụng củacủa StackStack
Ví
Ví dudu::ïï thủthủ tụctục QuickQuick__SortSort dùngdùng StackStack đểđể khửkhử đệđệ quiqui::
1.1. l l:=1; :=1; rr:=:=nn;;
2.2. Chọn Chọn phầnphần tửtử giữagiữa xx:=:=aa[([(ll++rr) ) divdiv 2]; 2];
3.3. Phân Phân hoạchhoạch ( (ll,,rr) ) thànhthành ( (ll1,1,rr1) 1) vàvà ( (ll2,2,rr2) 2) bằngbằng cáchcách xétxét: : yy thuộcthuộc ( (ll1,1,rr1) 1) nếunếu yy≤≤xx;;
yy thuộcthuộc ( (ll2,2,rr2) 2) ngượcngược lạilại;;
4.4. Nếu Nếu phânphân hoạchhoạch ( (ll2,2,rr2) 2) cĩcĩ nhiềunhiều hơnhơn 1 1 phầnphần tửtử thựcthực hiệnhiện: : CấtCất ( (ll2,2,rr2) 2) vàovào StackStack;;
NếuNếu ( (ll1,1,rr1) 1) cĩcĩ nhiềunhiều hơnhơn 1 1 phầnphần tửtử thựcthực hiệnhiện: :
ll==ll1;1;
rr==rr1;1;
GotoGoto 2; 2; NgượcNgược lạilại
LấyLấy ( (ll,,rr) ) rara khỏikhỏi StackStack nếunếu StackStack kháckhác rỗngrỗng vàvà GotoGoto 2; 2;