使用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的示例代码。这些操作允许我们在栈中插入元素、删除元素和查看栈顶元素。
