包含min函数的栈
来源:互联网 发布:ps做淘宝主图 编辑:程序博客网 时间:2024/04/28 10:10
设计一个数据栈和辅助栈。画图可以帮助我们理解:
#include <iostream>#include <cstdlib>#include <stack>#include <cassert>using namespace std;template<typename T> class StackWithMin{public:StackWithMin(void){}virtual ~StackWithMin(void){}T &top(void);const T &top(void) const;void push(const T &value);void pop(void);const T &min(void) const;bool empty() const;size_t size() const;private:stack<T> m_data;//数据栈,存放栈的所有的元素stack<T> m_min;//辅助栈,存放栈的最小的元素};template<typename T>void StackWithMin<T>::push(const T &value){m_data.push(value);if (m_min.size()==0||value<m_min.top()){m_min.push(value);}else{m_min.push(m_min.top());}}template<typename T>void StackWithMin<T>::pop(){assert(m_data.size()>0 && m_min.size() > 0);m_data.pop();m_min.pop();}template<typename T>const T &StackWithMin<T>::min() const{assert(m_data.size() > 0 && m_min.size() > 0);return m_min.top();}template<typename T>T &StackWithMin<T>::top(){return m_data.top();}template<typename T>const T &StackWithMin<T>::top() const{return m_data.top();}template<typename T>bool StackWithMin<T>::empty() const{return m_data.empty();}template<typename T>size_t StackWithMin<T>::size() const{return m_data.size();}void Test(char *testName, const StackWithMin<int> &stack, int expected){if (testName != NULL){printf("%s begins:", testName);}if (stack.min() == expected){printf("Passed.\n");}else{printf("Failed.\n");}}void main(){StackWithMin<int> stack;stack.push(3);Test("Test1", stack, 3);stack.push(4);Test("Test2", stack, 3);stack.push(2);Test("Test3", stack, 2);stack.push(3);Test("Test4", stack, 2);stack.pop();Test("Test5", stack, 2);stack.pop();Test("Test6", stack, 3);stack.pop();Test("Test7", stack, 3);stack.push(0);Test("Test8", stack, 0);system("pause");}
0 0
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min 函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- linux源代码下载和编译 问题
- Linux设备驱动总的并发控制
- Apache配置
- MySQL索引的查看创建和删除学习
- hadoop安装配置
- 包含min函数的栈
- web服务器开启gzip压缩
- word2vec代码注释 - @太极儒
- 一步步调试解决iOS内存泄漏
- jquery中 html() text() val() innerText总结
- ucos II 内核学习之四:任务延时函数
- appstore 提交各种状态
- 30页干货PPT|史上最深度电商行业分析报告
- java中常用到得设计模式共有23种