劍指 9 用兩個棧實現佇列

2021-08-20 03:35:39 字數 718 閱讀 4398

題目描述

演算法分析

stack1只用來插入元素,stack2只用來刪除元素;

每次刪除元素時,若stack2為空,則將stack1中所有元素依次壓入stack2中;否則,直接從stack2中刪除站頂元素。

提交**:

class solution

int pop()

} result = stack2.top();

stack2.pop();

return result;

}private:

stackstack1;

stackstack2;

};

測試**:

#include#includeusing namespace std;

/*// 面試題9:用兩個棧實現佇列

// 題目:用兩個棧實現乙個佇列。佇列的宣告如下,請實現它的兩個函式push

// 和pop,分別完成在佇列尾部插入結點和在佇列頭部刪除結點的功能。

*/// ********************測試**********************

void test(int actual, int expected)

int main(int argc, char* argv)

劍指offer(9) 用兩個棧實現佇列

首先佇列是 先進先出 原則,棧是 先進後出 的原則 接下來設計兩個棧,分為別positive和negative 當最初有元素要入佇列的時候,我們讓其進入positive棧中 如果需要出佇列了,那麼我們可以採取將positive中除了最底層的所有元素依次pop出來放進negative中 然後再將pos...

劍指Offer 9 用兩個棧實現佇列

準備兩個棧,稱為a和b,加元素的時候加進a,刪除元素時要考慮情況 假如a中已經有了幾個元素,而b中沒有元素 此時想要刪除元素並且滿足佇列的特性,只需要把a中的元素逐個彈出壓入到bb.push a.pop 直到a為空 此時b中元素的順序和之前的a就是反過來的,此時彈出b的元素即可 如果要刪除資料時,b...

劍指offer 9 用兩個棧實現佇列

用兩個棧實現乙個佇列。佇列的宣告如下,尾部插入整數和在佇列頭部刪除整數的功能。若佇列中沒有元素,deletehead 操作返回 1 leetcode 示例 1 輸入 3 輸出 null,null,3,1 示例 2 輸入 5 2 輸出 null,1,null,null,5,2 題目理解 輸入 cque...