方法一:
在队尾插入元素时,将新插入元素之前的所有元素顺序移动到它的后面,这样就形成了栈的存储顺序。队首元素就是栈顶元素。
class MyStack {
private:
queue<int> q; //存放栈元素的队列
public:
/** Initialize your data structure here. */
MyStack() {}
void push(int x) { //入栈
q.push(x); //在队尾插入元素
int length=q.size();
while(length>1){ //将新插入元素前面的所有元素顺序移动到它后面
q.push(q.front()); //这样就形成了栈的存储顺序,可以画图体验
q.pop();
length--;
}
}
int pop() { //出栈
int res=q.front(); //由于入队的调整,队首元素就是栈顶元素
q.pop();
return res;
}
int top() { //获取栈顶
return q.front();
}
bool empty() { //栈空
if(q.empty())
return true;
else
return false;
}
};
/**
* Your MyStack object will be instantiated and called as such:
* MyStack* obj = new MyStack();
* obj->push(x);
* int param_2 = obj->pop();
* int param_3 = obj->top();
* bool param_4 = obj->empty();
*/