数据结构----栈

2018-08-21  本文已影响12人  pgydbh

结构

先进后出
需要size()----大小
需要push()----压入
需要pop()----弹出
内存不够需要exPool()----扩展
同步需要锁住push()与pop()。size变量需要及时变更。volatile保持可见性。

代码

public class Stack<T> {

    /**
     * 1.size
     * 2.push
     * 3.pop
     * 4.同步
     */

    private volatile int size;
    private int len = 10;
    private Object[] ts;

    public Stack(){
        ts = new Object[10];
    }

    public int size(){
        return size;
    }

    public synchronized void push(T t){
        if (size >= len){
            exPool();
        }
        ts[size] = t;
        size++;
    }

    public synchronized T pop(){
        if (size > 0){
            size--;
            return (T) ts[size];
        } else {
            return null;
        }
    }

    private void exPool(){
        Object[] tsNew = new Object[len = len * 2];
        for (int i = 0; i < size; i++){
            tsNew[i] = ts[i];
        }
        ts = tsNew;
    }
}
上一篇下一篇

猜你喜欢

热点阅读