您的位置:首页 > 产品设计 > UI/UE

[leetcode]: 232. Implement Queue using Stacks

2017-05-26 15:12 381 查看

1. 题目

Implement the following operations of a queue using stacks.

push(x) – Push element x to the back of queue.

pop() – Removes the element from in front of queue.

peek() – Get the front element.

empty() – Return whether the queue is empty.

用栈实现队列。

2.分析

队列的特点:先进先出

栈的特点:先进后出

可以通过两个栈来实现队列。一个栈s1负责处理输入数据(push),一个栈s2负责处理输出数据(pop,top)

如下流程:

push(1,2,3)–压入栈s1

pop() –pop的结果应该是1出队列,所以需要将s1中的元素转移到s2,然后在s2中pop

push(4)—压入栈s1

pop()–2需要出队列,s2不为空,直接在s2中pop



3.代码

class MyQueue {
public:
MyQueue() {}

void push(int x) {
s1.push(x);
}

int pop() {
peek();
s2.pop();
}

int peek() {
if (s2.empty())
{
while (!s1.empty()) {
s2.push(s1.top());
s1.pop();
}
}
return s2.top();
}

bool empty() {
return s1.empty() && s2.empty();
}
private:
stack<int> s1;
stack<int> s2;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode queue stack