1 class Stack {
2 public:
3 // Push element x onto stack.
4 void push(int x) {
5 if(q1.empty()&&q2.empty())
6 q1.push(x);
7 else
8 {
9 if(q1.empty())
10 q2.push(x);
11 else q1.push(x);
12 }
13
14 }
15
16 // Removes the element on top of the stack.
17 void pop() {
18 if(q1.empty()&&q2.empty())
19 return ;
20 else
21 {
22 if(q1.empty())
23 {
24 if(q2.size()==1)
25 q2.pop();
26 else
27 {
28 while(q2.size()>1)
29 {
30 q1.push(q2.front());
31 q2.pop();
32 }
33 q2.pop();
34 }
35 }
36 else
37 {
38 if(q1.size()==1)
39 q1.pop();
40 else
41 {
42 while(q1.size()>1)
43 {
44 q2.push(q1.front());
45 q1.pop();
46 }
47 q1.pop();
48 }
49 }
50 }
51 }
52
53
54 // Get the top element.
55 int top() {
56 if(q1.empty()&&q2.empty())
57 return -1;
58 else
59 {
60 if(q1.empty())
61 {
62 return q2.back();
63 }
64 else
65 {
66 return q1.back();
67 }
68 }
69 }
70
71
72 // Return whether the stack is empty.
73 bool empty() {
74 if(q1.empty()&&q2.empty())
75 return true;
76 else return false;
77 }
78 private:
79 queue<int> q1;
80 queue<int> q2;
81 };