关于栈和队列的概念,相信大家都已经知道了,我这里就不在赘述了,如果还有不明白的小伙伴们可以看看我的上一篇博客,里边有介绍哦。
如何用栈实现队列呢?当然一个栈是不够的,请看下图:
定义两个栈,左边的栈为压入栈,首先数据进入到左边的栈,然后再将数据弹出压入到右边的栈,在将右边的栈中元素弹出,这样就达到了栈的 功能。
下边贴出代码:
class MyQueue {
public:
stack<int > in;
stack<int> out;
/** Initialize your data structure here. */
MyQueue() {
}
/** Push element x to the back of queue. */
void push(int x) {
in.push(x);
}
/** Removes the element from in front of queue and returns that element. */
int pop() {
if(out.empty())
{
while(!in.empty())
{
int v=in.top();
in.pop();
out.push(v);
}
}
int v=out.top();
out.pop();
return v;
}
/** Get the front element. */
int peek() {
if(out.empty())
{
while(!in.empty())
{
int v=in.top();
in.pop();
out.push(v);
}
}
int v=out.top();
return v;
}
/** Returns whether the queue is empty. */
bool empty() {
return in.empty()&&out.empty();
}
};