public class ArrayStackTest {
int top;
private Object[] arr;
// 指定大小初始化
public ArrayStackTest(int size) {
// 栈顶指针为-1
top = -1;
arr = new Object[size];
}
// 不指定大小初始化
public ArrayStackTest(){
// 栈顶指针为-1
top = -1;
arr = new Object[10];
}
// 入栈
public void push(Object val) {
if (isFull()) {
// 扩容
arr = Arrays.copyOf(arr, arr.length * 2);
}
arr[++top] = val;
}
// 出栈
public Object pop() {
if (isEmpty()) {
System.out.println("栈为空,出栈失败");
return null;
}
return arr[top--];
}
// 判断是否是满栈的
public Boolean isFull() {
return top == arr.length-1;
}
// 是否为空
public Boolean isEmpty() {
return top == -1;
}
// 个数
public int size(){
if (top == -1)
return -1;
int count = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] != null)
count++;
}
return count;
}
// 打印全部值
public void showAll(){
for (int i = top; i >= 0; i--)
System.out.println(arr[i]);
}
}
简单实现数组栈扩容
最新推荐文章于 2023-04-03 09:52:49 发布