Nguồn đề bài: http://www.spoj.com/PTIT/problems/BCSTACK/
1. Đề bài Stack BCSTACK spoj
Bài này sẽ luyện cho bạn các thao tác cài đặt cấu trúc dữ liệu ngăn xếp (stack). Nếu đã cài đặt thành công, hãy tìm hiểu cách sử dụng container stack trong STL và cài đặt nó.
Thao tác:
– 1. ‘init’ : Khởi tạo stack rỗng.
– 2. ‘push x’: Thêm phần tử x vào stack. (x là số nguyên dương không quá 10 mũ 9)
– 3. ‘pop’: Nếu stack không rỗng lấy ra phần tử ở đỉnh stack.
– 4. ‘top’: Trả về phần tử ở đỉnh stack. Nếu stack rỗng, trả về -1.
– 5. ‘size:’ Trả về kích thước stack (số phần tử hiện tại của stack).
– 6. ‘empty’: Kiểm tra stack rỗng hay không, nếu rỗng trả về 1, ngược lại là 0.
– 7. ‘end’: Kết thúc chương trình.
Dữ liệu:
Gồm nhiều dòng mô tả các thao tác như trên (số phần tử của stack luôn không quá 1000).
Kết quả:
Khi gặp các thao tác 4,5,6 các bạn in ra trên 1 dòng tương ứng với câu trả lời.
Ví dụ:
INPUT | OUTPUT |
initempty push 2 empty top push 1 size top pop top init push 1 top init top end | 10 2 2 1 2 1 -1 |
2. Code tham khảo BCSTACK Cấu trúc dữ liệu ngăn xếp
Bài này khá cơ bản, các bạn tham khảo code:
const fi=''; nmax=1000; type data=integer; var f:text; A:array[0..nmax] of longint; n:data; s:string; procedure init; begin n:=0; end; procedure pop; begin if n=0 then exit; dec(n); end; procedure top; begin writeln(a[n]); end; procedure empty; begin if n=0 then writeln(1) else writeln(0); end; procedure push; var x,r:longint; begin delete(s,1,5); val(s,x,r); inc(n); a[n]:=x; end; procedure xuli; begin a[0]:=-1; repeat readln(f,s); case s of 'init': init; 'end': exit; 'pop': pop; 'top': top; 'size': writeln(n); 'empty': empty; else push; end; until 1=2; end; begin assign(f,fi); reset(f); xuli; close(f); end.