一、栈的基本概念
栈(Stack)是一种特殊的线性数据结构,遵循后进先出(Last In First Out,LIFO)的原则。就像一摞盘子,最后放上去的盘子总是最先被拿走。栈有两个主要操作:
入栈(Push) :将一个元素添加到栈的顶部。
出栈(Pop) :移除并返回栈顶部的元素。
二、手写栈的实现
java
class MyStack {
private int[] array; // 用于存储栈中的元素
private int top; // 栈顶指针,指向栈顶元素的索引
private int capacity; // 栈的容量
// 构造函数,初始化栈的容量
public MyStack(int capacity) {
this.capacity = capacity;
this.array = new int[capacity];
this.top = 1; // 初始时栈为空,栈顶指针为 1
}
// 判断栈是否为空
public boolean isEmpty() {
return top == 1;
}
// 判断栈是否已满
public boolean isFull() {
return top == capacity 1;
}
// 入栈操作
public void push(int element) {
if (isFull()) {
System.out.println("栈已满,无法入栈");
return;
}
array[++top] = element; // 先将栈顶指针加 1,再将元素放入栈顶
}
// 出栈操作
public int pop() {
if (isEmpty()) {
System.out.println("栈为空,无法出栈");
return 1;
}
return array[top ]; // 先返回栈顶元素,再将栈顶指针减 1
}
// 获取栈顶元素
public int peek() {
if (isEmpty()) {
System.out.println("栈为空,没有栈顶元素");
return 1;
}
return array[top];
}
}
三、栈的应用