包含min函数的栈

来源:互联网 发布:mac 改键位 编辑:程序博客网 时间:2024/06/05 21:15

题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
分析
定义两个栈stk1和stk2,stk1用于存放压入栈的数据,stk2用于存放当前的最小值,在压入栈的时候进行比较,如果当前压入值小于等于stk2的栈顶元素则将该值同时压入stk1和stk2,否则压入stk1;在弹出元素的时候,如果stk1的栈顶元素和stk2的栈顶元素相同则同时弹出两个栈的栈顶元素,否则弹出stk1的栈顶元素,最终,栈stk1中的的最小元素就是stk2的栈顶元素。
C++实现如下:

stack<int> stk1,stk2;void push(int value) {        stk1.push(value);        if(stk2.empty()){            stk2.push(value);        }else{            if(stk2.top()>=value) stk2.push(value);        }     }void pop() {        if(stk1.top()==stk2.top()) stk2.pop();        stk1.pop();    }   int top() {     return stk1.top();    }int min() {    return stk2.top();    } 
原创粉丝点击