兩個棧實現佇列

2021-07-10 19:26:05 字數 540 閱讀 2566

看面經的時候發現,有道兩個棧實現佇列的題目,我的第一反應就是,這就是多此一舉。恩,這就是考對棧和佇列的熟悉程度的。

棧和佇列的操作都是常數級的,所以先入為主,兩個棧實現的佇列也應該是常數級的,可是想來想去發現實現不了(也可能是我沒想到=。=),目前的方法就是來回倒棧,時間複雜度就是長度。

現用c簡單的寫了一下,陣列實現的,是那個意思就行了。

#include

#include

#include

using

namespace

std;

int a[400],a_top;

int b[400],b_top;

void add(int x)

int get()

while(--l)

int x=a[l];

int &z=b_top,&zz=a_top;

while(z--)

z++;

return x;

}int main()

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

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

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

include include include using namespace std 使用兩個棧實現佇列,實現了push,pop,front操作 其中棧s2是輔助棧,push直接在s1中插入 pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。front就...

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

一 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。二 1 自己 基本思路 乙個棧用於壓縮,乙個專門用於彈出。因為棧是先進後出,所有的元素入棧再出棧,再入棧就可以將順序調整過來。但是沒有想到優化。class solution int pop int tem...