使用数组表示栈是一种常见的方法,可以通过一个数组来存储数据,并使用一个变量来记录栈顶的位置。以下是一个简单的Java示例,展示了如何使用数组实现栈的基本操作:
```java
public class ArrayStack {
private int[] stack; // 存储数据的数组
private int top; // 栈顶的位置
// 初始化栈的大小
public ArrayStack(int size) {
stack = new int[size];
top = -1; // 栈为空时,top 为 -1
}
// 压栈操作
public void push(int value) {
if (top == stack.length - 1) {
System.out.println("栈满了,压不进去了!");
} else {
stack[++top] = value;
}
}
// 弹栈操作
public int pop() {
if (isEmpty()) {
System.out.println("栈为空,无法弹出元素!");
return -1;
} else {
return stack[top--];
}
}
// 查看栈顶
public int peek() {
if (isEmpty()) {
System.out.println("栈为空,无法查看栈顶元素!");
return -1;
} else {
return stack[top];
}
}
// 检查栈是否为空
public boolean isEmpty() {
return top == -1;
}
// 获取栈的大小
public int size() {
return top + 1;
}
public static void main(String[] args) {
ArrayStack stack = new ArrayStack(5);
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println("栈顶元素: " + stack.peek()); // 输出: 3
System.out.println("弹出元素: " + stack.pop()); // 输出: 3
System.out.println("栈顶元素: " + stack.peek()); // 输出: 2
System.out.println("栈的大小: " + stack.size()); // 输出: 2
}
}
```
解释
数组存储:
使用一个数组 `stack` 来存储栈中的元素。
栈顶指针:
使用一个整数 `top` 来记录栈顶的位置。初始时,栈为空,`top` 为 -1。
压栈操作:
`push(int value)` 方法将元素添加到栈顶。如果栈已满,则输出提示信息。
弹栈操作:
`pop()` 方法移除并返回栈顶元素。如果栈为空,则输出提示信息。
查看栈顶:
`peek()` 方法返回栈顶元素但不移除它。如果栈为空,则输出提示信息。
检查栈是否为空:
`isEmpty()` 方法检查栈是否为空,返回布尔值。
获取栈的大小:
`size()` 方法返回栈中元素的数量。
动态数组
如果需要动态调整数组的大小,可以参考以下代码: