牛客66題(5)用兩個棧來實現一個佇列
阿新 • • 發佈:2018-11-24
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
版權宣告:本文為博主原創文章,轉載請附上博文連結!