前言
栈是一种简单而高效的数据结构,适用于很多应用场景。通过数组或链表实现栈,各有优缺点。数组实现的栈在内存连续性和访问速度上有优势,但可能需要处理动态扩容问题。而链表实现的栈在内存利用上更灵活,但每次操作都涉及节点的创建和销毁。理解和掌握栈的基本原理和操作,对于解决实际编程问题非常有帮助。
实现原理
用数组来实现栈,通常需要维护一个指针来指向栈顶位置。
具体代码实现
public class ArrayStack {
private int[] stack;
private int top;
private int capacity;
// 构造函数,初始化栈的容量
public ArrayStack(int capacity) {
this.capacity = capacity;
stack = new int[capacity];
top = -1;
}
// 压栈操作
public void push(int item) {
if (top == capacity - 1) {
throw new StackOverflowError("Stack is full");
}
stack[++top] = item;
}
// 弹栈操作
public int pop() {
if (isEmpty()) {
throw new RuntimeException("Stack is empty");
}
return stack[top--];
}
// 查看栈顶元素
public int peek() {