设计包含min函数的栈
来源:互联网 发布:ff14拉拉菲尔捏脸数据 编辑:程序博客网 时间:2024/06/05 03:48
题目:
定义栈的数据结构,在该类型中实现一个能够得到栈的最小元素的min函数。
分析:
1.设计一个数据栈,用于压入、弹出元素
2.设计一个辅助栈,用来存放最小元素。第一个先放进去,若后边的元素比较小,则将其压入辅助栈,否则压入辅助栈中最小的元素。
3.弹出一个数据栈的元素,弹出一个辅助栈的元素,满足弹出元素后还能得到次小
#include "stdafx.h"#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:std::stack<T> m_data;//数据栈,存放栈的所有元素 std::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);elsem_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();}int _tmain(int argc, _TCHAR* argv[]){ StackWithMin<int> stack; cout<< "栈中压入3:3->"<<endl; stack.push(3);cout<< "栈中最小的数是:"<<endl;cout << stack.min() << endl; stack.push(4);cout<< "栈中压入4:3->4"<<endl;cout<< "栈中最小的数是:"<<endl;cout << stack.min() << endl;cout<< "栈中压入2:3->4->2"<<endl; stack.push(2);cout<< "栈中最小的数是:"<<endl;cout << stack.min() << endl;cout<< "栈中压入3:3->4->2->3"<<endl; stack.push(3);cout<< "栈中最小的数是:"<<endl;cout << stack.min() << endl; stack.pop(); stack.pop(); stack.pop();stack.pop(); system("pause"); return 0;}
0 0
- 设计包含min函数的栈
- 设计包含min函数的栈
- 转载 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含 min 函数的栈
- 设计包含min函数的栈
- 2.设计包含min函数的栈
- 2、设计包含min 函数的栈
- 设计包含min函数的栈---Algorithms
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 2.设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- 设计包含min函数的栈
- C++之练习题23
- 页面中英切换
- 我的架构经验系列文章 - 后端架构 - 语言层面
- 我的架构经验系列文章 - 后端架构 - 系统层面
- HDU - 1061 Rightmost Digit
- 设计包含min函数的栈
- 加密 解密 函数
- 严蔚敏 数据结构 算法6.5
- HDU 1533 Going Home【km应用】
- 小文件解决方案
- memcache -- memory allocation
- 阿斯顿肺结核房管局股份好几个复活节
- MySQL启动分析 --> /MySQL5.6/sql/mysqld.cc
- 游戏开发(三)——WIN32 黑白棋(一)——棋局逻辑的设计