简单实现数组栈扩容

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]);
}

}

posted @ 2021-02-20 11:19  Daydream50  阅读(127)  评论(0)    收藏  举报