Java中栈的实现原理

理解:
底层数组保存数据,一个栈顶指针指向栈顶元素。
入栈,top++指向该元素,
出栈,出top指向元素,top–指向下一个元素
先进后出。
常用方法:
入栈:push()
出栈:pop()
判断是否为空:isEmpty()
栈顶元素:peek();
Java自带:

Stack<T> stack = new Stack<T>();
class Stack{
    private int top;
    private Object[] data; 
    public Stack(){
        data = new Object[100];
        top = -1;
    }
    //压栈 数据存入数组栈顶指针下标+1后对应的位置
    //确保top总是指向栈顶位置
    public synchronized void push(T t){
        if(top >= 100){
            System.out.println("栈满");
            return;
        }

        data[++top] = t;
    }
    //出栈 从栈顶指针指向的元素开始出栈
    //实现先进后出。
    public synchronized T pop(){
        if(top < 0){
            System.out.println("空栈");
            return null;
        }
        @SuppressWarnings("unchecked")
        T t = (T) data[top--];
        return t;
    }

    //获得栈顶元素
    public T peek(){
        return (T)data[top];
    }

    //获取栈的长度
    public int getLength(){
        return top < 0 ? 0:top+1;
    }
}

你可能感兴趣的:(java)