首页 > 代码库 > 包含min函数的栈
包含min函数的栈
定义栈的数据结构,在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min , push , pop 的时间复杂度都是O(1)。
1 /////////////////包含min函数的栈/////////////////////// 2 template<class T> class StackWithMin 3 { 4 public: 5 void push(const T& value); 6 void pop(); 7 T& min(); 8 private: 9 stack<T> m_data ;//保存数据 10 stack<T> m_min ;//保存最小值 11 }; 12 13 template<class T> void StackWithMin<T>::push(const T& value) 14 { 15 16 m_data.push(value); 17 if ( m_min.size()==0 || value<m_min.top() ) 18 { 19 m_min.push(value); 20 } 21 else 22 { 23 m_min.push(m_min.top()); 24 } 25 } 26 template<class T> void StackWithMin<T>::pop() 27 { 28 if (m_data.size()>0 && m_min.size()>0) 29 { 30 m_data.pop(); 31 m_min.pop(); 32 } 33 else 34 { 35 return; 36 } 37 } 38 template<class T> T& StackWithMin<T>::min() 39 { 40 assert(m_min.size()>0); 41 42 return m_min.top(); 43 44 45 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。