包含min函数的栈
2013-08-07 20:58
288 查看
#include<iostream>
#include<stack>
#include<assert.h>
using namespace std;
template<typename T>
class StackWithMin
{
public:
void push(const T& value );
void pop();
const T& min() 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();
}
void main()
{
int a[5]={2,3,5,0,1};
StackWithMin<int> stackMin;
for(int i=0; i<5; i++)
{
stackMin.push(a[i]);
}
for(int i=0; i<5; i++)
{
cout<<stackMin.min()<<endl;
stackMin.pop();
}
system("pause");
}
来自《剑指offer》
#include<stack>
#include<assert.h>
using namespace std;
template<typename T>
class StackWithMin
{
public:
void push(const T& value );
void pop();
const T& min() 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();
}
void main()
{
int a[5]={2,3,5,0,1};
StackWithMin<int> stackMin;
for(int i=0; i<5; i++)
{
stackMin.push(a[i]);
}
for(int i=0; i<5; i++)
{
cout<<stackMin.min()<<endl;
stackMin.pop();
}
system("pause");
}
来自《剑指offer》
相关文章推荐
- 包含min函数的栈
- 21 包含min函数的栈
- 包含min函数的栈
- 包含min函数的栈
- 【剑指offer】13,包含min函数的栈
- 设计包含min函数的栈
- 面试题21:包含min函数的栈
- 微软算法100题02 设计包含min函数的栈
- 练习系列 - 3、设计包含min函数的栈,push、pop、min的时间复杂度都为O(1),仿照APR_RING采用宏实现
- 剑指Offer-21-包含min函数的栈
- 剑指offer题21 包含min函数的栈
- 包含min函数的栈
- 20、包含min函数的栈
- 【数据结构】包含min函数的栈
- 【剑指offer】面试题30:包含min函数的栈
- 题目1522:包含min函数的栈
- 包含min函数的栈[数据结构]
- 剑指offer 4.3 举例形象化问题1- 包含Min函数的栈
- 设计包含min函数的栈,要求函数min、push以及pop的时间复杂度都是O(1)
- 程序员面试题精选100题(02)-设计包含min函数的栈[数据结构]