包含min函数的栈
来源:互联网 发布:杰克尼科尔森 知乎 编辑:程序博客网 时间:2024/06/05 14:51
代码:
#include <iostream>#include <stack>using namespace std;template <typename T> class StackWithMin{public: StackWithMin(); ~StackWithMin(); const T& top() const; void push(const T& value); void pop(); bool empty() const; size_t size() const; const T& m_min() const;private: stack<T> s_data; //数据栈,存放栈的所有元素 stack<T> s_min; //辅助栈,存放栈的最小元素};template<typename T> StackWithMin<T>::StackWithMin() {}template<typename T> StackWithMin<T>::~StackWithMin(){}template<typename T> const T& StackWithMin<T>::top() const{ return s_data.top();}template<typename T> void StackWithMin<T>::push(const T& value){ s_data.push(value); if (s_min.empty()) { s_min.push(value); } else { if (value > s_min.top()) s_min.push(s_min.top()); else s_min.push(value); }}template<typename T> void StackWithMin<T>::pop(){ if (!s_data.empty() && !s_min.empty()) { s_data.pop(); s_min.pop(); }}template<typename T> bool StackWithMin<T>::empty() const{ return s_data.empty();}template<typename T> size_t StackWithMin<T>::size() const{ return s_data.size();}template<typename T> const T& StackWithMin<T>::m_min() const{ return s_min.top();}int main(){ StackWithMin<int> sk; sk.push(1); sk.push(2); sk.push(3); sk.pop(); cout << "最小值: "<<sk.m_min() << endl; cout << "栈顶值: "<<sk.top() << endl; cout << "栈当前大小: "<<sk.size() << endl; cout << endl; system("pause"); return 0;}
测试:
0 0
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min 函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- Java-4 面向对象编程
- Nginx實現正向和反向代理
- JFinal Web开发学习(六)验证码验证和注册细节
- 小功能--点击量
- IDEA 2016 项目配置和tomcat配置
- 包含min函数的栈
- 7. Reverse Integer
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 2) Minimization dp
- Android管理篇
- ORACLE中区分空值和空字符串
- Android 5.0新控件学习知识总结
- Python学习笔记(一)
- 欢迎使用CSDN-markdown编辑器
- postman 下载 & 安装