fork(1) download
  1. import java.util.Scanner;
  2.  
  3. class Deque {
  4.  
  5. private class Node {
  6. Node prev;
  7. Node next;
  8. int x;
  9.  
  10. Node() {
  11. prev = null;
  12. next = null;
  13. x = 0;
  14. }
  15.  
  16. Node(Node a, Node b, int c) {
  17. prev = a;
  18. next = b;
  19. x = c;
  20. }
  21. }
  22.  
  23. ;
  24.  
  25. Node Front = null;
  26. Node Back = null;
  27. int Size = 0;
  28.  
  29. int size() {
  30. return Size;
  31. }
  32.  
  33. void push_back(int p) {
  34. if (Size == 0) {
  35. Node NewNode = new Node(Back, Front, p);
  36. Front = NewNode;
  37. Back = NewNode;
  38. } else {
  39. Node NewNode = new Node(null, Back, p);
  40. Back.prev = NewNode;
  41. Back = NewNode;
  42. }
  43. Size++;
  44. }
  45.  
  46. void push_front(int p) {
  47. if (Size == 0) {
  48. Node NewNode = new Node(Back, Front, p);
  49. Front = NewNode;
  50. Back = NewNode;
  51. } else {
  52. Node NewNode = new Node(Front, null, p);
  53. Front.next = NewNode;
  54. Front = NewNode;
  55. }
  56. Size++;
  57. }
  58.  
  59. int back() {
  60. if (Size != 0) {
  61. return Back.x;
  62. } else {
  63. return 0;
  64. }
  65. }
  66.  
  67. int front() {
  68. if (Size != 0) {
  69. return Front.x;
  70. } else {
  71. return 0;
  72. }
  73. }
  74.  
  75. int pop_front() {
  76. if (Size != 0) {
  77. int x = Front.x;
  78. Node NewNode = Front.prev;
  79. Front = NewNode;
  80. Size--;
  81. return x;
  82. } else {
  83. return 0;
  84. }
  85. }
  86.  
  87. int pop_back() {
  88. if (Size != 0) {
  89. int x = Back.x;
  90. Node NewNode = Back.next;
  91. Back = NewNode;
  92. Size--;
  93. return x;
  94. } else {
  95. return 0;
  96. }
  97. }
  98.  
  99. void clear() {
  100. while (Size > 0) {
  101. Node NewNode = Front.prev;
  102. Front = NewNode;
  103. Size--;
  104. }
  105. Front = null;
  106. Back = null;
  107. }
  108.  
  109.  
  110. public static void main(String[] args) {
  111. Deque deque = new Deque();
  112. Scanner scanner = new Scanner(System.in);
  113. System.out.println("enter your command");
  114. String command = scanner.nextLine();
  115.  
  116. while (!command.equals("exit")) {
  117. if (command.equals("push_back")) {
  118. int v = scanner.nextInt();
  119. deque.push_back(v);
  120. System.out.println("ok\n");
  121. } else if (command.equals("push_front")) {
  122. int v = scanner.nextInt();
  123. deque.push_front(v);
  124. System.out.println("ok\n");
  125. } else if (command.equals("front")) {
  126. if (deque.size() > 0) {
  127. System.out.println(deque.front());
  128. } else {
  129. System.out.println("error\n");
  130. }
  131. } else if (command.equals("back")) {
  132. if (deque.size() > 0) {
  133. System.out.println(deque.back());
  134. } else {
  135. System.out.println("error\n");
  136. }
  137. } else if (command.equals("size")) {
  138. System.out.println(deque.size());
  139. } else if (command.equals("pop_front")) {
  140. if (deque.size() > 0) {
  141. System.out.println(deque.pop_front());
  142. } else {
  143. System.out.println("error\n");
  144. }
  145. } else if (command.equals("pop_back")) {
  146. if (deque.size() > 0) {
  147. System.out.println(deque.pop_back());
  148. } else {
  149. System.out.println("error\n");
  150. }
  151. } else if (command.equals("clear")) {
  152. System.out.println("ok\n");
  153. deque.clear();
  154. }
  155. command = scanner.nextLine();
  156. }
  157. System.out.println("bye");
  158. }
  159. };
Success #stdin #stdout 0.06s 321344KB
stdin
push_front
4
push_back
5
front
push_front
3
back
size
pop_front
pop_back
clear
pop_back
size
exit
stdout
enter your command
ok

ok

4
ok

5
3
3
5
ok

error

0
bye