【剑指offer】两队列实现栈与两栈实现队列
来源:互联网 发布:淘宝怎么删除下架宝贝 编辑:程序博客网 时间:2024/05/23 17:13
题目:用两个栈实现一个队列。队列的声明如下,请实现他的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能
在完成代码之前应该想清楚测试用例:
1,在空的队列(栈)里添加删除元素。
2,往非空的队列(栈)里添加删除元素。
3,连续删除元素直至队列(栈)为空。
两栈实现队列:
#include<iostream>#include<stack>using namespace std;template<typename T>class MyQueue{public:void push(int node){stack1.push(node);}int pop(){if (stack2.size() <= 0){while (!stack1.empty()){int node = stack1.top();stack1.pop();stack2.push(node);}if (stack2.size() == 0){cout << "queue is empty" << endl;}int ret = stack2.top();stack2.pop();return ret;}}private:stack<T> stack1;stack<T> stack2;};//测试用例:查看出队列元素是否为第一次进去的。int test3(){MyQueue<int> qu;qu.push(1);qu.push(2);qu.push(3);qu.push(4);qu.push(5);int ret = qu.pop();cout << ret << endl;return 0;}
两队列实现栈:
class Stack{public:void push(const T& data){qu1.push(data);}T pop(){if (qu1.size()==0){throw new exception("the stack is empty");}T temp;while (!qu1.empty()){temp = qu1.front();qu1.pop();if (!qu1.empty()){qu2.push(temp);}}swap(qu1, qu2);return temp;}private:queue<T> qu1;queue<T> qu2;};int main(){Stack<int> st;st.push(1);st.push(2);st.push(3);cout << st.pop() << endl;cout << st.pop() << endl;cout << st.pop() << endl;cout << st.pop() << endl;return 0;</span>}
当栈为空时无法执行pop()操作,随即抛出异常。
0 0
- 【剑指offer】两队列实现栈与两栈实现队列
- 两栈实现队列
- 两栈实现队列,以及两队列实现栈
- 【栈,队列】两栈实现队列
- 【栈,队列】两队列实现栈
- day 4 两栈实现队列
- 用两队列实现一个栈
- [剑指offer]用两个栈实现队列
- 【剑指offer】两个栈实现一个队列
- 【剑指offer】两个队列实现一个栈
- 【剑指offer】用两个栈实现队列
- 剑指offer--用两个栈实现队列
- 剑指offer 两个栈实现队列
- 剑指Offer-用两个栈实现队列
- 剑指offer:用两个栈实现队列
- 《剑指offer》用两个栈实现队列
- 用两个栈实现队列(剑指offer)
- 剑指 offer:用两个栈实现队列
- iPhone实现自定义多选列表
- UNIX网络编程之管道
- 关于Nim博弈的一点小理解----谁才是最强战舰
- H.264中的SPS、PPS提取与作用
- http状态码301与302的区别
- 【剑指offer】两队列实现栈与两栈实现队列
- 图解Oracle 12c 手动建库
- libpng库的安装与使用(交叉编译)
- AngularJS 学习 之 初体验
- maven依赖关系
- ffmepg在VS开发环境中的设置以及常见问题
- nginx安装及简要配置
- mysql5.7json使用
- DOS批处理中%~dp0用法说明