028用两个栈实现队列(keep it up)
来源:互联网 发布:数据透视图怎么做 编辑:程序博客网 时间:2024/05/22 16:38
剑指offer中题目:http://ac.jobdu.com/problem.php?pid=1512
- 题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。
队列中的元素为int类型。
- 输入:
每个输入文件包含一个测试样例。
对于每个测试样例,第一行输入一个n(1<=n<=100000),代表队列操作的个数。
接下来的n行,每行输入一个队列操作:
1. PUSH X 向队列中push一个整数x(x>=0)
2. POP 从队列中pop一个数。
- 输出:
对应每个测试案例,打印所有pop操作中从队列pop中的数字。如果执行pop操作时,队列为空,则打印-1。
- 样例输入:
3PUSH 10POPPOP
- 样例输出:
10-1
代码:
#include <iostream>#include <string>#include <stack> class CQueue{public: CQueue() {} ~CQueue() {} void push(int vData) { m_InQue.push(vData); } int pop() { if (m_OutQue.empty()) { if (m_InQue.empty()) return -1; __move(); } int Data = m_OutQue.top(); m_OutQue.pop(); return Data; } private: std::stack<int> m_InQue; std::stack<int> m_OutQue; void __move() { while (!m_InQue.empty()) { m_OutQue.push(m_InQue.top()); m_InQue.pop(); } }}; int main(){ int N; std::string OperSrt; CQueue Que; std::cin >> N; while (N--) { std::cin >> OperSrt; if (OperSrt == "PUSH") { int Data; std::cin >> Data; Que.push(Data); } else { std::cout << Que.pop() << std::endl; } } return 0;}/************************************************************** Problem: 1512 User: Language: C++ Result: Accepted Time:510 ms Memory:1652 kb****************************************************************/
0 0
- 028用两个栈实现队列(keep it up)
- 013使用两个栈实现一个队列(keep it up)
- 007 字符串(keep it up)
- 005判断两个字符串是否是变位词 (keep it up)
- 023 和为S的两个数字(keep it up)
- 004字符串去重 (keep it up)
- 012温习汉诺塔 (keep it up)
- 030变态跳台阶(keep it up)
- (015)实现一个函数检查一棵树是否平衡(keep it up)
- 用两个栈实现队列 & 用两个队列实现栈
- 用两个队列实现栈&用两个栈实现队列
- 用两个栈实现队列 & 两个队列实现一个栈
- 两个栈实现队列&&用两个队列实现一个栈
- 用两个栈实现队列 & 两个队列实现栈
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个栈实现队列
- 用两个队列实现栈
- java泛型总结
- 网络编程学习笔记(广播)
- C++_标准模板库(STL)
- 【瞎搞】 Codeforces Round 276 DIV 2 C.Bits
- linux c string库函数总结
- 028用两个栈实现队列(keep it up)
- uva-1025、uva-437、uva-1347、uva-116、uva-12563
- 我的软考过程及做题总结
- MySQL 触发器简单实例
- 仿华为EmotionUI 3.0滑动效果
- win 8 下安装Oracle11g
- 关于日志切割(以nginx为例)
- css布局之左侧固定右侧自适应布局
- 关于qt安装