美文网首页
数据结构----栈

数据结构----栈

作者: pgydbh | 来源:发表于2018-08-21 10:43 被阅读12次

    结构

    先进后出
    需要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;
        }
    }
    

    相关文章

      网友评论

          本文标题:数据结构----栈

          本文链接:https://www.haomeiwen.com/subject/mzldiftx.html