题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
栈的结构特点就是后进先出,队列的特点是先进先出
就是用两个后进先出的栈来实现一个先进先出的功能
这里是使用两个栈stack1和stack2 来进行实现:
首先将元素通过压栈放进stack1中,但是我们要实现的是将第一个放进去的元素进行输出,也就是这里要实现的删除,然后通过一个个的出栈将元素再次放到stack2中,这样的话第一个元素即原来stack1的栈底元素,就到了stack2栈的顶部,然后再将它删除就完成了;
class Solution
{
public:
void push(int node) {
//将元素放到stack1中
stack1.push();
}
int pop() {
//如果stack2中元素为空的话,就把stack1里面的元素压入2中,如果不为空就不行,否则违反先进先出原则
if(stack2.size()==0)
{
while(stack1.size()!=0)
{
int data=stack1.top();
stack1.pop();
stack2.push(data);
}
}
int head=stack2.top();
stack2.pop();
return head;
}
private:
stack<int> stack1;
stack<int> stack2;
};