package com.briup.day13.que4;
public class Stack {
private int[] elementData;
private int size = 0;//可用元素的数量
public Stack() {
this(10);
}
public Stack(int capacity) {
elementData = new int[capacity];
}
//弹栈 取数据
public int pop() {
if(size<=0) {
throw new RuntimeException("Stack为空了,不可以弹栈");
}
int element = elementData[size];
elementData[size] = 0;
size--;
return element;
}
//压栈 存数据
public void push(int element) {
ensureCapacity(size+1);
elementData[size] = element;
size++;
}
private void ensureCapacity(int minCapacity) {
if(minCapacity > this.elementData.length) {
//grow
int newLength = elementData.length + (elementData.length>>1);//1.5倍扩容
elementData = grow(elementData, newLength);
}
}
private int[] grow(int[] oldArr,int newLength) {
int[] newArr = new int[newLength];
for(int i = 0;i<oldArr.length;i++) {
newArr[i] = oldArr[i];
}
return newArr;
}
//获取栈的容量
public int size() {
return size;
}
//展示栈中的数据
public void show() {
StringBuilder sb = new StringBuilder("[");
for(int i = 0;i<size;i++) {
sb.append(elementData[i]);
if(i!=size-1) {
sb.append(",");
}
}
sb.append("]");
System.out.println(sb.toString());
}
}
利用数组简单模拟栈(Stack)
最新推荐文章于 2023-05-06 11:21:12 发布