# Leetcode 225. Implement Stack using Queues(队列实现栈)

##### 代码示例:
/*
Implement the following operations of a stack using queues.

push(x) -- Push element x onto stack.
pop() -- Removes the element on top of the stack.
top() -- Get the top element.
empty() -- Return whether the stack is empty.
Notes:
You must use only standard operations of a queue -- which means only push to back, peek/pop from front, size, and is empty operations are valid.
Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
*/
#include<bits/stdc++.h>
using namespace std;
class MyStack
{
private:
std::queue<int> _data;
public:
MyStack()
{

}
int push(int x)
{
std::queue<int> tmp;
tmp.push(x);
while(!_data.empty())
{
tmp.push(_data.front());
_data.pop();
}
while(!tmp.empty())
{
_data.push(tmp.front());
tmp.pop();
}
return x;
}
int pop()
{
int x = _data.front();
_data.pop();
return x;
}
int top()
{
int x = _data.front();
return x;
}
int empty()
{
int x = _data.empty();
return x;
}
};

int main()
{
MyStack mystack;
mystack.push(1);
mystack.push(2);
mystack.push(3);
mystack.push(4);

cout<<"mystack.top() = "<<mystack.top()<<endl;
mystack.pop();
cout<<"mystack.top() = "<<mystack.top()<<endl;
mystack.push(5);
cout<<"mystack.top() = "<<mystack.top()<<endl;
return 0;
}

##### 示例输出
mystack.top() = 4
mystack.top() = 3
mystack.top() = 5