1.3 设计一个有getMin功能的栈

来源:互联网 发布:h5表单源码 编辑:程序博客网 时间:2024/06/05 21:57

题目:实现一个特殊的栈,在栈的基本功能上,实现返回栈中最小值的操作。

思路:使用两个栈,stackData存放当前栈中元素,功能与普通栈没有区别。stackMin存放每一步的最小值,若当前压栈的数据小于等于stackMin的栈顶元素,就将这个数据入栈到stackMin中。

class myStack{    public:        myStack();        virtual ~myStack();        void push(int num);     //入栈        void pop();              int getMin();   //获取栈中最小元素    private:        std::stack<int> stackData;        std::stack<int> stackMin;};//出栈void myStack::push(int num){    stackData.push(num);    if(stackMin.empty() || stackMin.top() >= num){        stackMin.push(num);    }}//入栈void myStack::pop(){        if(stackData.top() == stackMin.top()){        stackMin.pop();    }    stackData.pop();}//获取栈中最小元素int myStack::getMin(){    if(stackMin.empty()){        std::cerr<<"the stack is empty"<<std::endl;        return 0;    }    return stackMin.top();}
0 0
原创粉丝点击