校招面试 之 剑指offer第9-1题 用两个栈实现一个队列

Posted 我得去图书馆了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了校招面试 之 剑指offer第9-1题 用两个栈实现一个队列相关的知识,希望对你有一定的参考价值。

#include<iostream>
#include<stack>
using namespace std;

template <typename T>
void pushQueue(stack<T> &stack1, T t){
	stack1.push(t);
}

template<typename T>
T  popQueue(stack<T> &stack1, stack<T> &stack2){
	// 先将stack1倒到stack2中
	while(!stack1.empty()){
		stack2.push(stack1.top());
		stack1.pop();
	}

	// 然后取出stack2中的栈顶元素
	T targetNum = stack2.top();
	stack2.pop();

	// 将stack2中的元素倒回到stack1中(为了下次再做操作(入队或者出对只对stack1操作))
	while(!stack2.empty()){
		stack1.push(stack2.top());
		stack2.pop();
	}
	return targetNum;
}

// 输出
template <typename T>
void printStack1(stack<T> &stack1){
	while(!stack1.empty()){
		cout<<stack1.top()<<" ";
		stack1.pop();
	}
}
int main(){
	
	stack<int> stack1;
	stack<int> stack2;
	// 1.入队操作
	pushQueue(stack1, 100);
	pushQueue(stack1, 200);

	//2.出队操作
	cout<<popQueue(stack1, stack2)<<endl;
	// 3.打印验证
	pushQueue(stack1, 300);
	printStack1(stack1);
	system("pause");
	return 0;
}

 

以上是关于校招面试 之 剑指offer第9-1题 用两个栈实现一个队列的主要内容,如果未能解决你的问题,请参考以下文章

校招面试 之 剑指offer第10-3题 矩阵覆盖问题

校招面试 之 剑指offer第16题 数值的整数次方

剑指Offer-举例让抽象问题具体化面试题32.2:之字形打印二叉树

[剑指offer]面试题37:两个链表的第一个公共结点

[剑指offer]面试题7:用两个栈实现队列

剑指offer 面试21题