劍指offer 兩佇列實現棧與兩棧實現佇列

2021-07-11 21:08:18 字數 937 閱讀 3463

在完成**之前應該想清楚測試用例:

1,在空的佇列(棧)裡新增刪除元素。

2,往非空的佇列(棧)裡新增刪除元素。

3,連續刪除元素直至佇列(棧)為空。兩棧

實現佇列:

#include#includeusing namespace std;

templateclass myqueue

int pop()

if (stack2.size() == 0)

int ret = stack2.top();

stack2.pop();

return ret;

} }private:

stackstack1;

stackstack2;

};//測試用例:檢視出佇列元素是否為第一次進去的。

int test3()

測試結果如下:

佇列實現棧:

當棧為空時無法執行pop()操作,隨即丟擲異常。

劍指offer 兩個棧實現佇列

使用兩個棧實現乙個佇列。棧是先進後出,佇列是後進先出。如果只有乙個棧那麼是無法實現佇列的,但是兩個棧完全可以。如下 templateclass cqueue templatet cqueue deletehead if stack2.size 0 throw queue is empty t ret...

劍指offer 兩個棧實現佇列

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

劍指offer 兩個棧實現佇列

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