#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;
}
兩個棧實現一個隊列
棧是先進後出,隊列是先進先出,那麼需要另一個棧倒一下,把原來先進去的倒在上面,就可以實現了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.