包含min函数的桟
来源:互联网 发布:生死狙击六子刷枪软件 编辑:程序博客网 时间:2024/06/05 15:03
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
#include <iostream>#include <stack>#include <assert.h>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 || m_min.top() > value)m_min.push(value);elsem_min.push(m_min.top());}template<typename T> void StackWithMin<T>::pop(){assert(m_min.size() > 0 && m_data.size() > 0);m_min.pop();m_data.pop();}template<typename T> const T& StackWithMin<T>::min() const{assert(m_min.size() > 0 && m_data.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");}int main(int argc, char* argv[]){ 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); return 0;}
0 0
- 包含min函数的桟
- 剑指offer---包含min函数的桟
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min 函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 微软的讨论
- 获取APK包名的几种方法
- Safari调试iOS中的js
- POJ 1064 Cable master
- 8.8.1 Optimizing Queries with EXPLAIN
- 包含min函数的桟
- THINKPHP 中密码在编辑中不填写即不修改,ignore和md5冲突的解决办法
- 第三方集成微信登录、分享等功能的sdk
- 毕业5年决定你的命运
- LeetCode--subsets问题
- 定时同步sql server数据到mysql
- Linux初入门
- mysqlmb4
- Java用邻接矩阵实现广度优先