1 class MyQueue 2 { 3 private Stack s1; 4 private Stack s2; 5 6 public MyQueue(int size) 7 { 8 this.s1 = new Stack(size); 9 this.s2 = new Stack(size); 10 } 11 12 public boolean isFull() 13 { 14 return s1.isFull(); 15 } 16 17 public boolean isEmpty() 18 { 19 return s1.isEmpty(); 20 } 21 22 //时间复杂度: O(n) 23 public void EnQueue(int k) throws Exception 24 { 25 if(s1.isFull()) 26 throw new Exception("Overflow."); 27 else 28 { 29 while(!s1.isEmpty()) 30 s2.push(s1.pop()); 31 s1.push(k); 32 while(!s2.isEmpty()) 33 s1.push(s2.pop()); 34 } 35 } 36 37 //时间复杂度: O(1) 38 public int DeQueue() throws Exception 39 { 40 if(s1.isEmpty()) 41 throw new Exception("Underflow."); 42 else 43 return s1.pop(); 44 } 45 } 46 47 class Stack 48 { 49 private int top; 50 private int[] a; 51 52 public Stack(int size) 53 { 54 this.top = -1; 55 this.a = new int[size]; 56 } 57 58 public boolean isFull() 59 { 60 return this.top == this.a.length - 1; 61 } 62 63 public boolean isEmpty() 64 { 65 return this.top == -1; 66 } 67 68 public void push(int k) throws Exception 69 { 70 /*if(this.isFull()) 71 throw new Exception("Overflow.");*/ 72 //else 73 this.a[++top] = k; 74 } 75 76 public int pop() throws Exception 77 { 78 /*if(this.isEmpty()) 79 throw new Exception("Underflow.");*/ 80 //else 81 return this.a[top--]; 82 } 83 84 public int getLength() 85 { 86 return this.top + 1; 87 } 88 }