劍指offer 兩個棧實現佇列

2021-07-16 09:56:31 字數 405 閱讀 3618

使用兩個棧實現乙個佇列。

棧是先進後出,佇列是後進先出。如果只有乙個棧那麼是無法實現佇列的,但是兩個棧完全可以。**如下:

templateclass cqueue

templatet cqueue::deletehead()

} if(stack2.size()<=0)

throw("queue is empty!");

t ret=stack2.top();

stack2.pop();

return ret;

}

我覺得本題的考察點在模板以及棧的操作上面。因為棧進的順序和出的順序是相反的,而我們實現佇列時需要進的順序和出的順序是相同的。我們通過兩個棧負負得正,就可以實現輸入的順序和輸出的順序一致。

劍指offer 兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。棧的特點是先入後處,先出。而佇列的特點是先入先出,後出。所以我們整兩個棧,入棧的時候入第乙個。出棧的時候如果另外乙個非空,則優先處理另乙個。如果空的話,把所有的元素再 先出的放到另一棧裡,負負得正,得到了佇列的效果。c...

劍指offer 兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。思路 佇列 先進先出 棧 先進後出 基於兩種資料結構的特性,可使用兩個棧不斷交換資料,如 stack1儲存佇列的元素,stack2為空,如果直接使用stack1彈出,將彈出的是佇列尾部元素,不符合佇列結構,因此採用st...

劍指offer 用兩個棧實現佇列

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 我的思路是用乙個棧來儲存資料,入隊的話直接在這個棧上入棧,出隊的話借助輔助棧,對輔助棧入棧,然後取出頭元素,然後把輔助棧上的元素在...