1. 程式人生 > >牛客66題(5)用兩個棧來實現一個佇列

牛客66題(5)用兩個棧來實現一個佇列

class Solution
{
public:
    void push(int node) {
        stack1.push(node);
    }
 
    int pop() {
        int a;
        if(stack2.empty()){
            while(!stack1.empty())
            { stack2.push(stack1.top());
                stack1.pop();}
        }
            a=stack2.top();
            stack2.pop();
            
            return a;
        }
   
 
private:
    stack<int> stack1;
    stack<int> stack2;
};

用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。該題主要思路運用兩個棧,入隊時直接壓入棧一,出棧時先將所有的棧一的元素壓到棧二中同時棧一出棧清空,將棧二的頂部元素返回並出棧一次。其實還有個要點就是要判斷棧二是否為空,如果是不空,棧二的棧頂永遠是佇列的隊首元素。因此不空的時候佇列需要出棧直接彈出棧二的首元素即可。
--------------------- 
作者:libinxxx 
來源:CSDN 
原文:https://blog.csdn.net/libinxxx/article/details/82844863 
版權宣告:本文為博主原創文章,轉載請附上博文連結!