数据结构中堆栈顺序结构
时间: 2023-11-26 09:43:26 浏览: 35
堆栈是一种顺序结构的数据结构,它遵循先进后出(Last-In-First-Out,LIFO)的原则。在堆栈中,最后一个插入的元素将首先被访问。
堆栈的顺序结构可以通过数组或链表来实现。在使用数组实现时,需要定义一个固定大小的数组,通过一个指针来指示堆栈顶部元素的位置。在使用链表实现时,可以动态地分配内存来存储堆栈元素,并使用指针来链接它们。
下面是一个使用数组实现的简单示例代码:
```c
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
void initStack(Stack* stack) {
stack->top = -1; // 初始化堆栈顶部指针
}
int isEmpty(Stack* stack) {
return stack->top == -1; // 判断堆栈是否为空
}
int isFull(Stack* stack) {
return stack->top == MAX_SIZE - 1; // 判断堆栈是否已满
}
void push(Stack* stack, int item) {
if (isFull(stack)) {
printf("Stack is full.\n");
return;
}
stack->top++;
stack->data[stack->top] = item; // 入栈操作
}
int pop(Stack* stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return -1;
}
int item = stack->data[stack->top]; // 获取栈顶元素
stack->top--;
return item; // 出栈操作
}
int peek(Stack* stack) {
if (isEmpty(stack)) {
printf("Stack is empty.\n");
return -1;
}
return stack->data[stack->top]; // 获取栈顶元素但不出栈
}
```