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());
}
}
自定义一个简单的栈实现简单方法
最新推荐文章于 2022-08-28 10:20:26 发布