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




//主要思想是通过一个数组作为一个栈的存储结构来实现栈的功能
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值