題目描述:
用兩個棧來實現乙個佇列,完成佇列的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時,仍然 pus...
劍指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,就...