venkatasubramanian
BAN USERtemplate <class T>
class minStack
{
stack<T> st;
stack<T> mst;
public:
void push(T elem);
void pop() throw (stackEmptyException);
T Top()const throw (stackEmptyException);
T min() const throw (stackEmptyException);
};
template <class T>
void minStack<T>::push(T elem)
{
st.push(elem);
if(mst.empty() || (!mst.empty() && mst.Top() > elem))
mst.push(elem);
}
template <class T>
T minStack<T>::Top() const throw (stackEmptyException)
{
if(st.empty())
throw stackEmptyException();
return st.Top();
}
template <class T>
T minStack<T>::min() const throw (stackEmptyException)
{
if(mst.empty())
throw stackEmptyException();
return mst.Top();
}
template <class T>
void minStack<T>::pop() throw (stackEmptyException)
{
if(st.empty())
throw stackEmptyException();
if(st.Top() == mst.Top())
mst.pop();
st.pop();
}
Use DP
- venkatasubramanian July 01, 2019