用兩個棧實現乙個佇列的功能?要求給出演算法和思路!

2021-05-27 17:05:39 字數 307 閱讀 8432

用兩個棧實現乙個佇列的功能?要求給出演算法和思路!

堆疊的特徵:filo 先進後出

佇列的特徵:fifo 先進先出

所以,用兩個棧s1和s2模擬乙個佇列時,s1作輸入棧,逐個元素壓棧,以此模擬佇列元素的入隊。

當需要出隊時,將棧s1退棧並逐個壓入棧s2中,s1中最先入棧的元素,在s2中處於棧頂。

s2退棧,相當於佇列的出隊,實現了先進先出。

顯然,只有棧s2為空且s1也為空,才算是佇列空。

[演算法討論]演算法中假定棧s1和棧s2容量相同。出隊從棧s2出,當s2為空時,若s1不空,則將s1倒入s2再出…

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

1 c 實現 include includeusing namespace std 使用兩個堆疊實現佇列 s1 實現入隊,s2 實現出隊 首先,將資料存放在棧s1中,然後將資料push進s2中,再將s2中的資料pop 出佇列 1 如果棧b不為空,直接彈出棧b的資料 2 如果棧b為空,則依次彈出棧a的...

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

做題之前,我們先來回顧一下 棧和佇列的相同點以及不同點 便於做題時的應用!1.區別與聯絡 相同點 1 棧和佇列都是控制訪問點的線性表 2 棧和佇列都是允許在端點處進行資料的插入和刪除的資料結構 不同點 1 棧遵循 後進先出 lifo 的原則,即只能在該線性表的一頭進行資料的插入和刪除,該位置稱為 棧...

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

t deletehead 頭部刪除節點 while s1.empty t ret s2.top s2.pop return ret private stacks1 stacks2 問題2 用兩個佇列實現乙個棧 問題分析 用兩個佇列實現乙個棧,刪除時,由於佇列是先進先出的,而棧是後進先出,因此假設現在...