hafizhmakmur

Toki Learning 2D: Stack dan Queue

Aug 12th, 2012
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  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.
Add Comment
Please, Sign In to add comment