來源:程序員小灰

————— 第二天 —————

————————————

棧的特點是先入後出,出入元素都是在同一端(棧頂):

入棧:

出棧:

隊列的特點是先入先出,出入元素是在不同的兩端(隊頭和隊尾):

入隊:

出隊:

既然我們擁有兩個棧,那麼我們可以讓其中一個棧作爲隊列的入口,負責插入新元素;另一個棧作爲隊列的出口,負責移除老元素。

隊列的主要操作無非有兩個:入隊和出隊。

在模擬入隊操作時,每一個新元素都被壓入到棧A當中。

讓元素1 “入隊”:

讓元素2 “入隊”:

讓元素3 “入隊”:

這時候,我們希望最先“入隊”的元素1“出隊”,需要怎麼做呢?

讓棧A中的所有元素按順序出棧,再按照出棧順序壓入棧B。這樣一來,元素從棧A彈出並壓入棧B的順序是3,2,1,和當初進入棧A的順序1,2,3是相反的:

此時讓元素1 “出隊”,也就是讓元素1從棧B彈出:

讓元素2 “出隊”:

讓元素4 “入隊”:

此時的出隊操作仍然從棧B彈出元素。

讓元素3 “出隊”:

讓元素4 “出隊”:

查看原文 >>
相關文章