码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-07-23 22:03:59      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:return   tac   name   inf   class   include   操作   pen   mes   

#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题 用两个栈实现一个队列

标签:return   tac   name   inf   class   include   操作   pen   mes   

原文地址:https://www.cnblogs.com/xuelisheng/p/9356962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!