利用数组创建堆栈的代码
时间: 2024-04-30 13:19:24 浏览: 9
下面是利用数组创建堆栈的代码示例:
```
#define MAX_SIZE 100 // 堆栈的最大容量
// 堆栈结构体定义
struct Stack {
int top; // 堆栈顶部指针
int data[MAX_SIZE]; // 存储数据的数组
};
// 初始化堆栈
void initStack(struct Stack *s) {
s->top = -1; // 置顶部指针为-1,表示堆栈为空
}
// 判断堆栈是否为空
int isEmpty(struct Stack *s) {
return s->top == -1; // 堆栈为空时,顶部指针为-1
}
// 判断堆栈是否已满
int isFull(struct Stack *s) {
return s->top == MAX_SIZE - 1; // 堆栈已满时,顶部指针指向数组的最后一个元素
}
// 入栈操作
void push(struct Stack *s, int value) {
if (isFull(s)) {
printf("堆栈已满,无法入栈!\n");
return; // 若堆栈已满,直接返回
}
s->top++; // 先移动顶部指针
s->data[s->top] = value; // 将数据存储到堆栈中
}
// 出栈操作
int pop(struct Stack *s) {
if (isEmpty(s)) {
printf("堆栈为空,无法出栈!\n");
return -1; // 若堆栈为空,返回-1表示出栈失败
}
int value = s->data[s->top]; // 先获取顶部元素的值
s->top--; // 移动顶部指针
return value; // 返回出栈的元素值
}
// 获取堆栈顶部元素的值
int peek(struct Stack *s) {
if (isEmpty(s)) {
printf("堆栈为空,无法获取堆栈顶部元素!\n");
return -1; // 若堆栈为空,返回-1表示操作失败
}
return s->data[s->top]; // 返回顶部元素的值
}
```
使用方法:
1. 首先需要定义一个 `Stack` 结构体类型的变量;
2. 调用 `initStack` 函数初始化堆栈;
3. 调用 `push` 函数入栈;
4. 调用 `pop` 函数出栈;
5. 调用 `peek` 函数获取堆栈顶部元素的值。