1. 程式人生 > >【校招面試 之 劍指offer】第9-2題 用兩個隊列實現一個棧

【校招面試 之 劍指offer】第9-2題 用兩個隊列實現一個棧

實現 bsp ont 入隊 out == end nbsp img

#include<iostream>
#include<queue>
using namespace std;
// 對於出棧解決的思路是:將queue1的元素除了最後一個外全部放到queue2中,然後再pop出queue1的最後一個元素...
template<typename T>
void popStack(queue<T> &queue1, queue<T> &queue2){
	if(queue1.size() == 0)
		return;
	// 將queue1中的元素除了最後一個元素外,依次入隊queue2中
	while(queue1.size() - 1){
		queue2.push(queue1.front());
		queue1.pop();
	}
	cout<<"出隊元素為:"<<queue1.front()<<endl;
	queue1.pop();
	// 將queue2的元素放回到queue1中
	while(queue2.size()){
		queue1.push(queue2.front());
		queue2.pop();
	}
}

template<typename T>
void printStack(queue<T> &queue1){
	while(!queue1.empty()){
		cout<<queue1.front()<<" ";
		queue1.pop();
	}
}

int main(){
	
	queue<int> queue1;
	queue<int> queue2;

	// 1.實現入棧操作
	queue1.push(100);
	queue1.push(200);
	queue1.push(300);

	// 2.實現出棧操作
	popStack(queue1, queue2);

	queue1.push(400);
	queue1.push(500);

	popStack(queue1, queue2);

	printStack(queue1);

	system("pause");
	return 0;
}

運行結果:

技術分享圖片

【校招面試 之 劍指offer】第9-2題 用兩個隊列實現一個棧