数据结构和算法经典100题-第26题
2015-12-28 10:04
603 查看
题目:
要求实现一个队列类,队列底层由两个栈实现。
题目解析:
这道题很简单,只有一个关键点。涂鸦了一个图,关键点只有在stack2为空时,才能将stack1内的数据导入stack2。
Okay,no code say what?示意代码:
要求实现一个队列类,队列底层由两个栈实现。
题目解析:
这道题很简单,只有一个关键点。涂鸦了一个图,关键点只有在stack2为空时,才能将stack1内的数据导入stack2。
Okay,no code say what?示意代码:
template <class Type> class QueueEx { private: stack<Type> m_stackPush; stack<Type> m_stackPop; public: QueueEx() {}; ~QueueEx() {}; void push(Type &element) { if (m_stackPop.empty()) { m_stackPop.push(element); } }; void pop() { if ((m_stackPop.empty()) { while (!m_stackPush.empty()) { Type &tmp = m_stackPush.top(); m_stackPop.push(tmp); m_stackPush.pop(); } } m_stackPop.pop(); }; Type &front() { if ((m_stackPop.empty()) { while (!m_stackPush.empty()) { Type &tmp = m_stackPush.top(); m_stackPop.push(tmp); m_stackPush.pop(); } } m_stackPop.top(); }; Type &back() { if (m_stackPush.empty()) { if (m_stackPush.empty()) { return m_stackPush.back(); } else { while (!m_stackPop.empty()) { Type &tmp = m_stackPop.top(); m_stackPush.push(tmp); m_stackPop.pop(); } return m_stackPush.back(); } } else { m_stackPush.top(); } }; bool empty() { return m_stackPush.empty() && m_stackPop.empty(); }; size_t size() { return m_stackPush.size() && m_stackPop.size(); }; }; ---------- okay,路漫漫其修远兮,吾将上下....
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#数据结构之顺序表(SeqList)实例详解
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#线程队列用法实例分析
- C#实现的算24点游戏算法实例分析
- 算法系列15天速成 第九天 队列
- C++基于栈实现铁轨问题
- c语言实现的带通配符匹配算法