您的位置:首页 > 职场人生

面试题12 - 包含 min 函数的栈 【栈】

2013-01-29 13:37 435 查看
#include <iostream>
#include <cstdio>
#include <stack>
#include <queue>
#include <deque> // 支持下标访问
#include <algorithm>

using namespace std;
template<typename T> class StackWithMin {
public :
StackWithMin() {}
virtual ~StackWithMin() {}
const size_t size() const;
void pop();
void push(const T& value);
T top() const;
T min();
private :
deque<T> m_data;
deque<T> m_min;
};
template<typename T> const size_t StackWithMin<T>::size() const {
return m_data.size();
}
template<typename T> void StackWithMin<T>::pop() {
assert(!m_data.empty() && !m_min.empty());
m_data.pop_front();
m_min.pop_front();
}
template<typename T> void StackWithMin<T>::push(const T& value) {
m_data.push_front(value);
if(m_min.empty() || value < m_min[0]) {
m_min.push_front(value);
}
else {
m_min.push_front(m_min[0]);
}
}
template<typename T> T StackWithMin<T>::top() const {
assert(!m_data.empty() && !m_min.empty());
return m_data[0];
}
template<typename T> T StackWithMin<T>::min() {
assert(!m_data.empty() && !m_min.empty());
return m_min[0];
}
int main() {
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: