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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 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. |
Bài viết liên quan
- PTIT123J PTIT spoj – Dấu ngoặc đúng
- P167PROE spoj PTIT – ROUND 7E – Phương trình
- PTIT016E spoj PTIT – ACM PTIT 2016 E – Kỳ thi ACM/ICPC
- PTIT016D spoj PTIT- ACM PTIT 2016 D – Biểu thức
- Spoj PTIT PTIT016C – ACM PTIT 2016 C – Chẵn lẻ
- PTIT127A spoj PTIT – Tổ chức kì thi
- P167PROD spoj PTIT – ROUND 7D – ABC
- P164SUMI spoj PTIT – ROUND 4I – Next round
- PTIT135J spoj PTIT – Tính lãi suất
- P156SUME spoj PTIT – ROUND 6E – Ước chung của chuỗi