資料結構 兩個棧實現乙個佇列 面試

2021-07-12 02:18:51 字數 545 閱讀 8251

棧結構:先進後出,後進先出,只允許在棧尾操作。

佇列:先進先出,在隊尾入隊,在隊頭出隊。

要想用兩個棧實現乙個佇列,就需要使用乙個相當於中間量的結構進行佇列的入隊和出隊操作。

用圖形象化為:

這樣問題就從圖中得出了思路:

入隊操作:把入隊元素一一存入乙個棧結構中即可。

出隊操作:出隊時,先判斷另乙個棧結構中是否有元素,若有先將元素出棧pop();若為空,則把棧s1中的元素全部倒入push()棧s2中,然後讓s2棧頂元素出棧pop(),此時的元素序列和棧s1中剛好相反,即達到出隊效果。

那麼,用**實現也變得簡單:

#include #include using namespace std;

class queue

;int main()

如有紕漏,歡迎指正。

本文出自 「vs呂小布」 部落格,請務必保留此出處

資料結構 兩個佇列實現乙個棧

用兩個棧實現乙個佇列,這個問題與 兩個佇列實現乙個棧 原理非常的相似。只要你明白了 兩個佇列實現乙個棧 的原理,相信聰明的你,就會明白這個問題只是它的變種,所有的異或就會迎刃而解的。這裡大家可以參考我的部落格 如下 define crt secure no warnings 1 includeusi...

資料結構 兩個佇列實現乙個棧

void stackinit stack stack 初始化 void stackdestroy stack stack 銷毀 void stackprint stack stack,const char msg 列印棧 void stackpush stack stack,datatype val...

資料結構 兩個棧實現乙個佇列

棧的特性是先進後出,佇列的特性是先進先出。那麼,我們使用兩個棧,對同乙個元素進行先進後出兩次棧就形成了先進先出的順序。即乙個元素需要入棧兩次,才能被取出來。我們將put,get定義為存放元素,與取元素。使用命名為in,out的棧,in代表往佇列裡面put元素第一次入棧是進入in,out代表get元素...