用java实现栈,并实现min方法

来源:互联网 发布:手机淘宝管理评价在哪 编辑:程序博客网 时间:2024/06/11 21:22
//主要思想是通过一个数组作为一个栈的存储结构来实现栈的功能public class StackOfInteger {    private int[] elements;    private int size;//栈中元素的个数,elements.length是数组长度即栈的大小capacity    public static final int DEFAULTY_CAPACITY=16;    public StackOfInteger(){        this(DEFAULTY_CAPACITY);    }    public StackOfInteger(int capacity){        elements=new int[capacity];//创建一个固定容量的数组    }    public boolean isEmpty(){//if(size==0) return true;//return size==0;                             //elements肯定不为空啊//      if(elements==null)//这是我之前写的,错误地方是对这个栈的实现方法不清楚//          return true;  //以为elements.length就是栈中元素真正的长度理解//      else return false;//不够透彻        return size==0;    }    public int peek(){        return elements[size-1];    }    public void push(int value){        //如果数组elements的长度不够存储 则扩大两倍 再push(value)        if(size>=elements.length){            int[] temp=new int[elements.length*2];            //然后将当前数组赋值给新数组temp            System.arraycopy(elements,0,temp,0,elements.length);            //再赋给elements            elements=temp;        }        //        elements[size++]=value;    }    public int pop(){        return elements[--size];    }    public int getSize(){        return size;    }    public int min(){        /*         * int[] e=elements.clone();         * //这是我第一次写min函数的时候用的复制的数组方法,结果         * 输出一直为0,后来才明白定义的栈类是数组,定义的capacity         * 才是数组的长度,而size才是真正的栈中元素的长度。         *          * 区别一下与下面定义数组e的区别         */        int[] e=new int[size];        for(int i=0;i<size;i++){            e[i]=elements[i];        }        int min=e[0];        for(int i=0;i<e.length;i++){            if(min>e[i])                min=e[i];        }        return min;    }}

学习心得:
*1.用数组的方式构建一个栈。
*2.实际数组的长度length是栈的容量,栈元素的个数应该是push进去的size

0 0
原创粉丝点击