詳解兩個棧如何實現佇列的功能 考慮最全面

2021-08-23 12:02:09 字數 754 閱讀 6973

話不多說。**奉上,各種情況自認為考慮的比較完善啦,如有不足,請指正!

注釋上面都有,就不在一一解讀啦。

/*

主要功能:用兩個棧實現乙個佇列

具體實現:兩個棧,先進後出,現在要將其實現為佇列,先進先出

用棧s1完成資料的入,棧s2完成資料的彈出

棧s1只管資料的入,棧s2彈出的時候,先要保證佇列裡面有元素才可以彈出,

當棧s2為空時,必須將棧s1的元素全部彈出且入棧s2,不為空的時候直接彈出即可。

pop:彈出資料 top:獲得資料 push:輸入資料

*/#include #include #include #include using namespace std;

// 用兩個棧實現乙個佇列

class myqueue

int pop() //棧s2用來彈出資料

if(s2.empty())

}int result = s2.top();

s2.pop();

return result;

}bool empty() // 判斷模擬的佇列是否為空

int size() // 判斷模擬的佇列的實際長度

private:

stacks1; //stack是乙個裝有序列式容器的容器介面卡

stacks2;

};int main()

return 0;

}

用兩個棧實現佇列 及 兩個佇列實現棧功能

最近筆試遇到這個問題,感覺蠻有意思的,分析看看 一 問 用兩個棧實現乙個佇列的功能,要求給出演算法和思路 示意圖 答 設2個棧a,b,初始化為空 入隊 將新元素push入棧a 出隊 1 判斷棧b是否為空 2 如果不為空,則將棧a中所有元素依次pop出並push到棧b 3 將棧b的棧頂元素pop出 說...

兩個棧實現佇列的功能

分析 設定兩個棧s1 s2,一開始均為空。入隊 將新元素push入s1。出隊 1 判斷棧s2是否為空 2 如果s2為空,把s1中的所有元素全部pop出並且push到s2中,從s2中pop出棧頂元素即可出列 3 如果s2不為空,直接從s2中pop出棧頂元素即可出列 int enqueue int e ...

兩個棧實現佇列 兩個佇列實現棧

1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...