数组栈(Array Stack)

title

数组栈(Array Stack)是一种使用数组实现的栈数据结构。栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。数组栈使用数组作为底层数据结构,可以通过下标直接访问数组元素,因此具有快速访问的优点。

数组栈可以实现以下操作:

push(x):将元素 x 压入栈顶。 pop():从栈顶弹出一个元素,并返回该元素的值。 peek():返回栈顶元素的值,但不弹出该元素。 isEmpty():判断栈是否为空。 isFull():判断栈是否已满。

以下是使用 Java 实现一个数组栈的示例代码:

public class ArrayStack {
    private int capacity; // 栈的容量
    private int[] array; // 存储元素的数组
    private int top; // 栈顶指针

    public ArrayStack(int capacity) {
        this.capacity = capacity;
        this.array = new int[capacity];
        this.top = -1;
    }

    public void push(int x) {
        if (isFull()) {
            throw new RuntimeException("Stack is full");
        }
        top++;
        array[top] = x;
    }

    public int pop() {
        if (isEmpty()) {
            throw new RuntimeException("Stack is empty");
        }
        int x = array[top];
        top--;
        return x;
    }

    public int peek() {
        if (isEmpty()) {
            throw new RuntimeException("Stack is empty");
        }
        return array[top];
    }

    public boolean isEmpty() {
        return top == -1;
    }

    public boolean isFull() {
        return top == capacity - 1;
    }
}

在上面的代码中,我们使用了一个整型数组来存储元素,以及一个整型变量 top 作为栈顶指针。构造函数用于初始化栈的容量、数组和栈顶指针。push() 和 pop() 方法用于添加和删除元素,peek() 方法用于返回栈顶元素的值,isEmpty() 和 isFull() 方法用于判断栈是否为空或已满。在 isFull() 方法中,我们将栈的容量减一是因为 top 指针从零开始。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:37:00

results matching ""

    No results matching ""