
Toki Learning 2D: Stack dan Queue
By:
hafizhmakmur on
Aug 12th, 2012 | syntax:
None | size: 2.39 KB | hits: 54 | expires: Never
program latihan2d_1;
var
a : array[0..99999] of longint;
i,n : longint;
kript : integer;
h,t : longint;
angka : longint;
procedure baca(var kript : integer);
var
idx : integer;
huruf : char;
kata : string;
kamus : array[0..3] of string = ('push_front','push_back','pop_front','pop_back');
begin
idx := 0;
kata := '';
read(huruf);
while (huruf <> ' ') and (huruf <> char(26)) and (huruf <> char(10)) and (huruf <> char(13)) do begin
kata := kata + huruf;
read(huruf);
end;
while (idx <= 3) and (kript <> idx) do begin
if kata = kamus[idx] then begin
kript := idx;
end;
// writeln('menunggu');
inc(idx);
// writeln(idx,' ',kata);
end;
// writeln('selesai');
// writeln(kript);
end;
procedure push_front(var angka, h,t : longint);
begin
if h = -1 then begin h := 0; t := 0; end else begin
if h = 99999 then begin h := 0; end else begin
h := h + 1;
end;
end;
a[h] := angka;
// writeln('h = ',h,' ',angka);
end;
procedure push_back(var angka,h,t : longint);
begin
// writeln(t,' kedua');
if t = -1 then begin h := 0; t := 0; end else begin
if t = 0 then begin t := 99999; end else begin
t := t - 1;
end;
end;
a[t] := angka;
// writeln('t = ',t,' ',angka);
end;
procedure pop_front(var h,t : longint);
begin
if h <> -1 then begin
if h = 0 then begin h := 99999 end else begin
h := h - 1;
end;
end;
// writeln('h = ',h,' ',angka);
end;
procedure pop_back(var h,t : longint);
begin
if t <> -1 then begin
if t = 99999 then begin t := 0; end else begin
t := t + 1;
end;
end;
// writeln('t = ',t,' ',angka);
end;
procedure kirim(a : array of longint; h,t : longint);
var
u : longint;
begin
if t > h then begin
for u := h downto 0 do begin
writeln(a[u]);
end;
for u := 99999 downto t do begin
writeln(a[u]);
end;
end else begin
for u := h downto t do begin
writeln(a[u]);
end;
end;
end;
begin
readln(n);
h := -1;
t := -1;
for i := 0 to 99999 do begin
a[i] := 0;
end;
for i := 1 to n do begin
kript := -1;
baca(kript);
case kript of
0: begin readln(angka); push_front(angka,h,t);
end;
1: begin readln(angka); push_back(angka,h,t); end;
2: begin readln; pop_front(h,t); end;
3: begin readln; pop_back(h,t); end;
end;
// writeln(h,' ',t);
end;
kirim(a,h,t);
end.