1. 题目:实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作
2. 思路:用一个辅助栈缓存当前栈中的最小值
2. Answer:
#include <stack>
using namespace std;
template<typename T>
class MyStack
{
public:
void push(T &t){
stackData.push(t);
if (minData.empty())
{
minData.push(t);
}
else
{
T top = minData.top();
if (t<top)
{
minData.push(t);
}
else
{
minData.push(top);
}
}
}
void pop()
{
if (!stackData.empty())
{
stackData.pop();
minData.pop();
}
else
{
throw exception("The stack is empty");
}
}
T& getMin()
{
if (!minData.empty())
{
return minData.top();
}
else
{
throw exception("The stack is empty");
}
}
private:
stack<T> stackData;
stack<T> minData;
};