算法题:用数组实现一个栈

自定义ArrayStack类,用数组实现一个栈:

public class ArrayStack {
    
    
    // 栈的底层数组
    private int[] stack;
    // 栈顶元素的索引,初始化为-1表示栈为空
    private int top;
    // 栈的容量
    private int capacity;

    /**
     * 构造函数,初始化栈的容量
     * @param capacity 栈的容量
     */
    public ArrayStack(int capacity) {
    
    
        this.stack = new int[capacity]; // 分配指定容量的数组
        this.top = -1; // 初始化栈顶索引为-1
        this.capacity = capacity; // 设置栈的容量
    }

    /**
     * 向栈中添加元素
     * @param value 要添加的元素值
     * @return 如果添加成功返回true,如果栈已满返回false
     */
    public boolean push(int value) {
    
    
        if (top == capacity - 1) {
    
     // 检查栈是否已满
            return false; // 如果栈已满,则无法添加新元素,返回false
        }
        stack[++top] = value; // 先将栈顶索引加1,然后将新元素放到栈顶
        return true; // 添加成功,返回true
    }

    /**
     * 从栈中移除并返回栈顶元素
     * @return 如果栈不为空,返回栈顶元素;如果栈为空,返回null
     */
    public Integer pop() {
    
    
        if (top == -1) {
    
     // 检查栈是否为空
            return null; // 如果栈为空,则返回null
        }
        return stack[top--]; // 返回栈顶元素,并将栈顶索引减1
    }

    // 这里可以添加其他方法,如isEmpty(), isFull(), peek()等

    /**
     * 检查栈是否为空
     * @return 如果栈为空返回true,否则返回false
     */
    public boolean isEmpty() {
    
    
        return top == -1;
    }

    /**
     * 检查栈是否已满
     * @return 如果栈已满返回true,否则返回false
     */
    public boolean isFull() {
    
    
        return top == capacity - 1;
    }

    /**
     * 获取栈顶元素但不移除它
     * @return 如果栈不为空,返回栈顶元素;如果栈为空,返回null
     */
    public Integer peek() {
    
    
        if (top == -1) {
    
    
            return null;
        }
        return stack[top];
    }
}

在这个类中,我添加了isEmpty(), isFull(), 和 peek()方法的实现,这些方法分别用于检查栈是否为空、是否已满,以及获取栈顶元素但不移除它。这些方法在栈的实现中非常常见,并且对于栈的操作来说非常有用。

猜你喜欢

转载自blog.csdn.net/qq_36329049/article/details/142500847