每日一題 37 兩個佇列實現棧

2021-06-16 13:56:56 字數 943 閱讀 9737

題目來自劍指offer

題目:兩個佇列實現棧

思路:乙個佇列存資料,另乙個佇列作為轉存資料的臨時佇列。

注意:哪個佇列存資料不定,那個佇列作為臨時佇列也不定。

壓棧時:找到乙個有資料的佇列,放入資料。如果兩個佇列都為空,則隨便找乙個佇列存資料。

出棧時:找到那個存資料的佇列,設其資料個數為n。

(1)對數列執行 n-1 次出隊操作。

(2)把這些出隊的資料轉存到另乙個佇列中。

(3)最後那個資料即為所求,輸出。

棧滿:乙個佇列滿,則棧滿。

棧空:兩個佇列都為空,則空。

**:#include #include using namespace std;

const int size = 5;

class queue

;class stack

;queue::queue()

void queue::addtail(int ndata)

return m_queueone.removehead();

} else

return m_queuetwo.removehead(); }}

//入棧操作:

//找到乙個有資料的佇列壓入資料。

//兩個佇列都為空,隨便找乙個佇列壓入資料

void stack::push(int ndata)

else }

int stack::length()

else }

bool stack::isempty()

else }

bool stack::isfull()

else }

int main()

{ stack s;

cout<<"push: ";

for (int i = 0;i < size - 1;i++)

{ cout<

每日一題 36 用兩個棧實現佇列

題目來自劍指offer 題目 思路 設定兩個棧,乙個用來接收資料instack,乙個用來輸出資料outstack。佇列空 兩個棧都為空,則佇列空 佇列滿 接收資料的instack棧滿了,而且輸出資料的outstack棧中有資料,則滿。入隊 檢測接收資料的instack棧,是否為滿。不滿,則直接入in...

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

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就...