Stack<==>Queue。使用棧實現隊列的功能以及使用隊列實現棧的功能
首先棧的原理是先入的后出,也就是First In Last Out(FILO)。隊列的原理是先入先出?First In First Out(FIFO)
1.棧實現隊列
原理:使用兩個棧,一個用來進一個用來出。
push操作時候,往輸入的棧push元素
pop操作的時候,先判斷輸出的棧有沒有元素,如果沒有就把輸入棧里面元素依次后入先出的順序給到輸出棧,最后取出輸出棧的元素。
2.隊列實現棧
方法1:用一個輔助隊列,每當有元素push進“棧”,則需要把隊列的front位置給它空出來,方便后面直接pop()和top(),因此我們可以做兩次搬家操作,來獲得一個新的隊列:
方法2:在每次push()操作時,我們直接從隊列頭開始,把每一個元素復制到隊尾,然后刪除隊頭的這個元素,這樣push進來的新元素就到了front的位置: