兩個棧實現一個隊列

棧是先進後出,隊列是先進先出,那麼需要另一個棧倒一下,把原來先進去的倒在上面,就可以實現了
#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;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章