此题关键部分是理解,栈的特性与队列的特性,栈先进后出,队列先进先出,然后使用一个temp队列对原队列进行逆置
上代码。
#include<queue>
#include<iostream>
using namespace std;
class MyStack{
public:
MyStack(){
}
void push(int x)
{
//使用temp队列逆置 新元素 利用temp队列先进先出的特性将新元素逆置
std::queue<int> temp_queue;
//对新元素x的操作
temp_queue.push(x);
while(!_data.empty()){
temp_queue.push(_data.front());
_data.pop();
}
while(!temp_queue.empty())
{
_data.push(temp_queue.front());
temp_queue.pop();
}
}
int pop(){
int x = _data.front();
_data.pop();
return x;
}
int top(){
return _data.front();
}
bool empty(){
return _data.empty();
}
private:
std::queue<int> _data;
};
int main()
{
cout << "test" << endl;
MyStack stc;
stc.push(1);
stc.push(2);
stc.push(3);
//进栈 1 2 3 出栈 3 2 1
cout<< stc.pop() << endl;
cout<< stc.pop() << endl;
cout<< stc.pop() << endl;
}
运行结果