求栈的最小值

来源:互联网 发布:今晚eia数据 编辑:程序博客网 时间:2024/06/09 23:56

这里写图片描述

#include<iostream>#include<stack>using namespace std;#define MAX_DATA 10000000template <class T>class MyStack{    stack<T> s1; //s1数据栈    stack<T> s2; //s2最小值栈public:    void Push(const T& x)    {        T min = Min();        if (x < min)        {            s1.push(x);            s2.push(x);        }        else        {            s1.push(x);            s2.push(min);        }    }    void Pop()    {        if (!s1.empty())        {            s1.pop();            s2.pop();        }    }    T Min()    {        if (s2.empty())        {            return MAX_DATA;        }        return s2.top();    }};int main(){    MyStack<int> s;    s.Push(5);    s.Push(2);    s.Push(3);    s.Push(4);    //s.Push(1);    //s.Push(6);    s.Pop();    s.Pop();    s.Pop();    int min = s.Min();    cout << "stack min = "<<min << endl;    getchar();    return 0;}
0 0
原创粉丝点击