0%

使用两个栈模拟队列

一个栈负责写入,一个栈负责读出。

当写入时把读出栈的数据依次弹出并压入写入栈,读出时同理。

C++代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution
{
public:
void push(int node) {
while (!stack2.empty()) {
stack1.push(stack2.top());
stack2.pop();
}
stack1.push(node);
}

int pop() {
int result;
while (!stack1.empty()) {
stack2.push(stack1.top());
stack1.pop();
}
result = stack2.top();
stack2.pop();
return result;
}

private:
stack<int> stack1;
stack<int> stack2;
};