劍指 7 利用兩個棧構建乙個佇列

2021-09-07 13:49:11 字數 648 閱讀 5699

題目描寫敘述:

用兩個棧來實現乙個佇列,完畢佇列的push和pop操作。

佇列中的元素為int型別。

解析:

定義2個棧s1, s2

1. 開始時。將元素push進s1

2. front()或pop()時,將s1的資料,出棧。順序壓入s2; 此時發現 s2 的出棧順序即佇列的出佇列順序。

3. 再次push時,仍然 push 進 s1

4. front()或pop()時,假設 s2 為空,則將 s1 的全部資料壓入 s2

將 s1 作為入佇列的棧,將 s2 作為出佇列的棧,當 s2 為空時,將 s1 的全部內容壓入 s2

#include 

#include

using

namespace

std;

template

class myqueue

t front()

}return s2.top();

}void pop()

}s2.pop();

return;

}};int main()

結果為:

13

劍指 7 利用兩個棧構建乙個佇列

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 定義2個棧s1,s2 1.開始時,將元素push進s1 2.front 或pop 時,將s1的資料,出棧,順序壓入s2 此時發現 s2 的出棧順序即佇列的出佇列順序。3.再次push時,仍然 push ...

劍指Offer 利用兩個棧實現乙個佇列

1 template class cqueue 2 思路 棧是先進後出,而佇列是先進先出的,而要用棧實現佇列的話,兩步操作如下 進佇列 第乙個棧stack1專門用來壓入資料 出佇列 要把佇列頭部元素輸出,而這個頭部會在stack1中的底部,因此我們需要利用輔助棧stack2 把stack1元素依次壓...

劍指offer 05兩個棧構建佇列,兩個佇列構建棧

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。js裡用陣列可以模擬棧 push pop,也可以模擬佇列push,shift 資料存放在其中乙個棧裡面,push操作直接push,pop操作,先把有資料的棧全部pop出來,並push到另乙個陣列裡面,這樣直接pop,就...