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 }