数组栈(Array Stack)
数组栈(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 指针从零开始。