欢迎访问宙启技术站
智能推送

使用Java函数实现栈的基本操作:push、pop和peek

发布时间:2023-07-08 17:19:13

栈是一种后进先出(LIFO)的数据结构,其中插入和删除操作只在栈的顶部进行。栈的基本操作包括push(入栈)、pop(出栈)和peek(查看栈顶元素)。

在Java中,我们可以使用数组或链表来实现栈。下面我将使用数组来实现栈的基本操作。

首先,我们需要定义一个类来表示栈,并声明一个整型数组来存储栈的元素:

class MyStack {
    private int[] stack;
    private int top;

    public MyStack(int size) {
        stack = new int[size];
        top = -1;
    }
}

在构造函数中,我们使用指定的大小初始化数组,并将栈顶指针top设置为-1,表示栈为空。

接下来,我们实现push操作。push操作首先检查栈是否已满,如果不满,则将要插入的元素放入数组中,并将top指针向上移动一位:

public void push(int value) {
    if (top == stack.length - 1) {
        System.out.println("Stack is full!");
        return;
    }
    stack[++top] = value;
}

在push方法中,我们首先检查栈是否已满,如果已满,则打印“Stack is full!”并返回。否则,将top指针移动到数组中的下一个位置,并将新元素插入数组中。

接下来,我们实现pop操作。pop操作首先检查栈是否为空,如果不为空,则返回栈顶元素并将top指针向下移动一位:

public int pop() {
    if (top == -1) {
        System.out.println("Stack is empty!");
        return -1;
    }
    return stack[top--];
}

在pop方法中,我们首先检查栈是否为空,如果为空,则打印“Stack is empty!”并返回-1。否则,返回栈顶元素并将top指针向下移动一位。

最后,我们实现peek操作。peek操作返回栈顶元素,但不对栈做任何修改:

public int peek() {
    if (top == -1) {
        System.out.println("Stack is empty!");
        return -1;
    }
    return stack[top];
}

在peek方法中,我们首先检查栈是否为空,如果为空,则打印“Stack is empty!”并返回-1。否则,返回栈顶元素。

现在,我们已经实现了栈的基本操作push、pop和peek。接下来,我们可以使用MyStack类来创建一个栈对象,并测试这些操作的实现:

public static void main(String[] args) {
    MyStack stack = new MyStack(5);
    stack.push(1);
    stack.push(2);
    stack.push(3);
    System.out.println("Peek: " + stack.peek()); // 输出3
    System.out.println("Pop: " + stack.pop()); // 输出3
    System.out.println("Pop: " + stack.pop()); // 输出2
    System.out.println("Peek: " + stack.peek()); // 输出1
    stack.push(4);
    stack.push(5);
    stack.push(6); // 输出“Stack is full!”
}

以上是使用Java函数实现栈的基本操作push、pop和peek的示例代码。这些操作允许我们在栈中插入元素、删除元素和查看栈顶元素。