包含min函数的栈

import java.util.Stack;

/**
 * 设计栈的数据结构,实现获得栈中最小元素min的函数,使得pop push getMin的时间 复杂度为o(1)
 * @author zhijian
 *
 */
public class Code21 {

    class MyStack {

        private Stack<Integer> dataStack;
        private Stack<Integer> minStack;

        public MyStack() {
            dataStack = new Stack<Integer>();
            minStack = new Stack<Integer>();
        }

        public void push(Integer item) {
            dataStack.push(item);
            if (minStack.size() == 0 || item <= minStack.lastElement())
                minStack.push(item);
            else
                minStack.push(minStack.lastElement());
        }

        public Integer pop() {
            if (dataStack.size() > 0) {
                minStack.pop();
                return dataStack.pop();
            } else
                return null;
        }

        public Integer getMin() {
            if (minStack.size() > 0) {
                return minStack.lastElement();
            } else
                return null;
        }

    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Code21 code21 = new Code21();
        MyStack myStack = code21.new MyStack();
        myStack.push(8);
        myStack.push(3);
        myStack.push(2);
        myStack.push(5);
        myStack.push(4);
        System.out.println(myStack.getMin());
        myStack.pop();
        System.out.println(myStack.getMin());
        myStack.pop();
        System.out.println(myStack.getMin());
        myStack.pop();
        System.out.println(myStack.getMin());
        myStack.pop();
    }

}

 

posted @ 2013-08-27 20:15  待定...  阅读(174)  评论(0)    收藏  举报