Don't like ads? PRO users don't see any ads ;-)

Toki Learning 2D: Stack dan Queue

By: hafizhmakmur on Aug 12th, 2012  |  syntax: None  |  size: 2.39 KB  |  hits: 54  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. program latihan2d_1;
  2.  
  3. var
  4.         a : array[0..99999] of longint;
  5.         i,n : longint;
  6.         kript : integer;
  7.         h,t : longint;
  8.         angka : longint;
  9.  
  10. procedure baca(var kript : integer);
  11.  
  12. var
  13.         idx : integer;
  14.         huruf : char;
  15.         kata : string;
  16.         kamus : array[0..3] of string = ('push_front','push_back','pop_front','pop_back');
  17.        
  18. begin
  19.         idx := 0;
  20.         kata := '';
  21.         read(huruf);
  22.         while (huruf <> ' ') and (huruf <> char(26)) and (huruf <> char(10)) and (huruf <> char(13)) do begin
  23.                 kata := kata + huruf;
  24.                 read(huruf);
  25.         end;
  26.        
  27.         while (idx <= 3) and (kript <> idx) do begin
  28.                 if kata = kamus[idx] then begin
  29.                         kript := idx;
  30.                 end;
  31.         //      writeln('menunggu');
  32.                 inc(idx);
  33.         //      writeln(idx,' ',kata);
  34.         end;
  35. //      writeln('selesai');
  36. //      writeln(kript);
  37. end;
  38.  
  39. procedure push_front(var angka, h,t : longint);
  40.        
  41. begin
  42.         if h = -1 then begin h := 0; t := 0; end else begin  
  43.         if h = 99999 then begin h := 0; end else begin
  44.                 h := h + 1;
  45.         end;
  46.         end;
  47.         a[h] := angka;
  48. //      writeln('h = ',h,' ',angka);
  49. end;
  50.  
  51. procedure push_back(var angka,h,t : longint);
  52.  
  53. begin
  54. //      writeln(t,' kedua');
  55.         if t = -1 then begin h := 0; t := 0; end else begin
  56.         if t = 0 then begin t := 99999;  end else begin
  57.                 t := t - 1;
  58.         end;
  59.         end;
  60.         a[t] := angka;
  61. //      writeln('t = ',t,' ',angka);
  62. end;
  63.  
  64. procedure pop_front(var h,t : longint);
  65.  
  66. begin
  67.         if h <> -1 then begin
  68.                 if h = 0 then begin h := 99999 end else begin
  69.                         h := h - 1;
  70.                 end;
  71.         end;
  72. //      writeln('h = ',h,' ',angka);
  73. end;
  74.  
  75. procedure pop_back(var h,t : longint);
  76.  
  77. begin
  78.         if t <> -1 then begin
  79.                 if t = 99999 then begin t := 0; end else begin
  80.                         t := t + 1;
  81.                 end;
  82.         end;
  83. //      writeln('t = ',t,' ',angka);
  84. end;
  85.  
  86. procedure kirim(a : array of longint; h,t : longint);
  87.  
  88. var
  89.         u : longint;
  90.  
  91. begin
  92.         if t > h then begin
  93.                 for u := h downto 0 do begin
  94.                         writeln(a[u]);
  95.                 end;
  96.                 for u := 99999 downto t do begin
  97.                         writeln(a[u]);
  98.                 end;
  99.         end else begin
  100.                 for u := h downto t do begin
  101.                         writeln(a[u]);
  102.                 end;
  103.         end;
  104. end;
  105.  
  106. begin
  107.                 readln(n);
  108.                 h := -1;
  109.                 t := -1;
  110.                 for i := 0 to 99999 do begin
  111.                         a[i] := 0;
  112.                 end;
  113.                 for i := 1 to n do begin
  114.                         kript := -1;
  115.                         baca(kript);
  116.                         case kript of
  117.                                 0: begin readln(angka); push_front(angka,h,t);
  118.                                 end;
  119.                                 1: begin readln(angka); push_back(angka,h,t); end;
  120.                                 2: begin readln; pop_front(h,t); end;
  121.                                 3: begin readln; pop_back(h,t); end;
  122.                         end;
  123.                 //      writeln(h,' ',t);
  124.                 end;
  125.                
  126.                 kirim(a,h,t);
  127. end.