题目1512:用两个栈实现队列
2013-09-15 20:00
295 查看
题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。
队列中的元素为int类型。
输入:
每个输入文件包含一个测试样例。
对于每个测试样例,第一行输入一个n(1<=n<=100000),代表队列操作的个数。
接下来的n行,每行输入一个队列操作:
1. PUSH X 向队列中push一个整数x(x>=0)
2. POP 从队列中pop一个数。
输出:
对应每个测试案例,打印所有pop操作中从队列pop中的数字。如果执行pop操作时,队列为空,则打印-1。
样例输入:
样例输出:
用两个栈来实现一个队列,完成队列的Push和Pop操作。
队列中的元素为int类型。
输入:
每个输入文件包含一个测试样例。
对于每个测试样例,第一行输入一个n(1<=n<=100000),代表队列操作的个数。
接下来的n行,每行输入一个队列操作:
1. PUSH X 向队列中push一个整数x(x>=0)
2. POP 从队列中pop一个数。
输出:
对应每个测试案例,打印所有pop操作中从队列pop中的数字。如果执行pop操作时,队列为空,则打印-1。
样例输入:
3 PUSH 10 POP POP
样例输出:
10 -1
思路:PUSH操作时,将数据插入到s1,POP操作时,判断s2是否为空,不为空输出top().为空则判断s1是否为空,是输出“-1”,否将s1.size()-1个元素放入s2内,输出第s1.siez()个元素。反复操作
#include<iostream> #include<stack> #include<cstring> #include<cstdio> using namespace std ; int main(void) { int n ; while(cin >> n ) { char a[10]; int i , cnt ; stack<int>s1,s2 ; for( i = 0 ; i < n ; i ++){ cin >> a ; if(!strcmp(a,"PUSH")) { cin >> cnt ; s1.push(cnt); } else { if(!s2.empty()) { printf("%d\n",s2.top()); s2.pop(); } else { if(s1.empty()) printf("-1\n"); else { while(s1.size()!=1) { s2.push(s1.top()); s1.pop() ; } printf("%d\n",s1.top()); s1.pop(); } } } } } return 0 ; }
相关文章推荐
- JD_题目1512——用两个栈实现队列
- 九度OJ-题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列
- 九度_题目1512:用两个栈实现队列
- 【剑指Offer面试编程题】题目1512:用两个栈实现队列--九度OJ
- 用两个栈实现队列 c++ 9度题目号1512
- 【剑指Offer面试编程题】题目1512:用两个栈实现队列--九度OJ
- 题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列
- 【九度】题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列-九度
- [九度OnlineJudge][剑指Offer]题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列
- 题目1512:用两个栈实现队列 && 包含min函数的栈
- 面试题7—相关题目(两个队列实现栈)