栈是先进后出,队列是先进先出,那么需要另一个栈倒一下,把原来先进去的倒在上面,就可以实现了
#include<iostream>
#include<stack>
class myQueue
{
private:
std::stack<int> data; //数据成员被所有成员函数共享,可以直接使用
public:
void push(int x){
//申请临时栈空间
std::stack<int> temp;
//压入新元素之前,把数据栈中的元素全部倒入临时栈
while(!data.empty()){
temp.push(data.top());
data.pop();
}
temp.push(x);
while(!temp.empty()){ //push和pop操作实现数据更新
data.push(temp.top());
temp.pop();
}
}
//注意函数的返回类型
void pop(){
data.pop();
}
int peek(){
return data.top();
}
bool empty(){
return data.empty();
}
};
int main(){
myQueue Q;
std::cout<<Q.empty()<<std::endl; //1
Q.push(3);
Q.push(2);
Q.push(4);
std::cout<<Q.peek()<<std::endl; //3
Q.pop();
std::cout<<Q.peek()<<std::endl; //2
return 0;
}