zoukankan      html  css  js  c++  java
  • 栈java实现之线性存储源码

    class Stack<T>{
        private int size=0;//栈大小
        private final int default_length=20;
        private int length;//栈容量
        private Object[] o;
        
        //初始化
        public Stack(){
            length = default_length;
            o = new Object[length];
        }
        
        public Stack(T data,int init_length){
            length = init_length;
            o = new Object[length];
            o[0] = data;
            size++;
        }
        
        //
        public int getLength(){
            return size;
        }
        
        
        //入栈
        public void push(T data){
            if(size+1>length){
            while(size+1 > length){
                length <<=1;
            }
            
            Object[] temp = new Object[length];
            int i = o.length;
            while(i-->=0){
                temp[i]=o[i];        
                o[i] = null;
            }
            o = temp;
            }
                
            o[size++]=data;
            
        }
        //出栈
        public T pop(){
            @SuppressWarnings("unchecked")
            T olddata = (T) o[size-1];
            o[--size] = null;
            return olddata;
        }
        //只返回栈顶元素
        @SuppressWarnings("unchecked")
        public T peek(){
            return (T) o[size-1];
        }
        //判空
        public boolean isEmpty(){
            if(size >0){
                return false;
            }else{
                return true;
            }
        }

        //清空
        public void clear(){
            while(size>0){
                o[--size] = null;
            }
        }
        
        @Override
        public String toString() {
            if(size == 0){
                return "[]";
            }else{
                StringBuffer sb = new StringBuffer("[");
                int i=0;
                while(i<size)
                    sb.append(o[i++]+",");
                return sb.delete(sb.length()-1, sb.length()).toString()+"]";
            }
            
        }
        
        
    }

  • 相关阅读:
    JavaScript实现上传图片预览[js前端实现]
    Java内存Happen-Before
    《干净架构读书笔记》——业务驱动编程
    《干净架构读书笔记》——编程范式
    Scrum中的冲刺和迭代
    Spring Cloud中通过Kafka传递自定义Header
    领域驱动开发(DDD)Web开发中的典型分层
    给开发团队减减负
    业务实体和用例
    什么是好的代码-代码Review要点
  • 原文地址:https://www.cnblogs.com/mapleyuan/p/3002969.html
Copyright © 2011-2022 走看看