自定义一个简单的栈实现简单方法

import java.util.Arrays;
import java.util.EmptyStackException;
/**
 * 自定义一个栈
 * */
public class myStack<E> {
   private Object[] arr;//定义栈底层结构为数组
   private int size;//定义存储元素个数
   private int STACK_LENGTH=4;//定义数组初始化长度
   private int index=-1;//定义指针初始化指向位置

   /**
    * 定义push(E item)方法去添加元素
    * */
    public E push(E item){
       //初始化数组
        this.Newarr();
        //添加元素
        this.arr[++index]=item;
        //改变size
        this.size++;
        return item;
    }
    /**
     * 定义Newarr()方法去初始化数组已级数组扩容
     * */
    private void Newarr(){
        if(this.arr==null){
            this.arr=new Object[STACK_LENGTH];
        }
        if(this.size-(this.STACK_LENGTH-1)>=0){
            this.STACK_LENGTH=this.STACK_LENGTH+(this.STACK_LENGTH>>1);
            this.arr= Arrays.copyOf(this.arr,this.STACK_LENGTH);
        }
    }
    /**
     * 定义pop()方法去获取栈顶元素
     * */
    public E pop(){
        //判断栈顶是否有元素
        if(this.size==0){
           throw new EmptyStackException();
        }
        //改变size值
        this.size--;
        //返回栈顶元素
        return (E)this.arr[index--];
    }
    /**
     * 定义empty()方法判断栈是否为空
     * */
    public boolean empty(){
        if(this.size==0){
            return true;
        }
        return false;
    }
    public static void main(String[] args) {
        myStack<String> stack=new myStack<>();
        stack.push("aa");
        stack.push("bb");
        stack.push("cc");
        stack.push("dd");
        stack.push("ee");
        System.out.println(stack.size);
        System.out.println(stack.pop());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值