兩個隊列模擬一個棧

題目:用兩個隊列模擬一個棧,即用兩個隊列的出隊和入隊操作,來實現棧的出棧和入棧操作。

思路:稍微畫下草圖,便不難想出該題的解決方法,思路如下:

    假設有兩個隊列Q1和Q2,當二者都爲空時,入棧操作可以用入隊操作來模擬,可以隨便選一個空隊列,假設選Q1進行入棧操作,現在假設a,b,c依次入棧了(即依次進入隊列Q1),這時如果想模擬出棧操作,則需要將c出棧,因爲在棧頂,這時候可以考慮用空隊列Q2,將a,b依次從Q1中出隊,而後進入隊列Q2,將Q1的最後一個元素c出隊即可,此時Q1變爲了空隊列,Q2中有兩個元素,隊頭元素爲a,隊尾元素爲b,接下來如果再執行入棧操作,則需要將元素進入到Q1和Q2中的非空隊列,即進入Q2隊列,出棧的話,就跟前面的一樣,將Q2除最後一個元素外全部出隊,並依次進入隊列Q1,再將Q2的最後一個元素出隊即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章