数据结构 - 栈与队列
1. 栈的定义与操作
栈(Stack)是一种后进先出(LIFO, Last In First Out)的数据结构。这意味着最后进入栈的元素最先被移除。栈的基本操作包括:
- 压栈(Push) :将一个元素添加到栈顶。
- 弹栈(Pop) :移除并返回栈顶元素。
- 获取栈顶元素(Peek) :查看栈顶元素而不移除它。
- 检查栈是否为空(IsEmpty) :判断栈是否为空。
栈可以通过数组或链表来实现。使用数组实现时,需要预先确定栈的最大容量;而使用链表实现则更加灵活,可以根据需要动态调整栈的大小。
栈的数组实现
#define MAX_SIZE 100
typedef struct {
int arr[MAX_SIZE];
int top;
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
int isEmpty(Stack *s) {
return s->top == -1;
}
void push(Stack *s, int value) {
if (s->top < MAX_SIZE - 1) {
s->arr[++s->top] = value;
} else {