帮我 利用“数组”作为存储结构方法实现“堆栈”的基本操作,包括:创建堆栈、入栈、出栈、空栈、满栈等操作写一个C语言程序
时间: 2023-07-14 17:13:17 浏览: 115
链队列的入队示意<p>A-堆栈和队列
好的,下面是一个用数组实现堆栈的基本操作的C语言程序:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
void createStack() {
top = -1;
}
void push(int value) {
if (top >= MAX_SIZE - 1) {
printf("Error: Stack overflow\n");
} else {
top++;
stack[top] = value;
}
}
int pop() {
int value = -1;
if (top < 0) {
printf("Error: Stack underflow\n");
} else {
value = stack[top];
top--;
}
return value;
}
int peek() {
return stack[top];
}
bool isEmpty() {
return top < 0;
}
bool isFull() {
return top >= MAX_SIZE - 1;
}
int main() {
createStack();
push(10);
push(20);
push(30);
printf("Top element: %d\n", peek());
while (!isEmpty()) {
int value = pop();
printf("Popped element: %d\n", value);
}
return 0;
}
```
在这个程序中,我们定义了一个长度为100的数组 `stack` 来作为堆栈的存储结构。`top` 用来记录堆栈顶部元素的下标,初始化为 -1 表示堆栈为空。
`createStack()` 函数用来创建一个空的堆栈,即将 `top` 重置为 -1。
`push()` 函数用来将元素入栈。如果堆栈已满,则输出错误信息;否则,将 `top` 加1并将元素存放在 `stack[top]` 中。
`pop()` 函数用来将元素出栈。如果堆栈为空,则输出错误信息;否则,将 `top` 减1并返回 `stack[top]` 中的元素。
`peek()` 函数用来查看堆栈顶部的元素,但不将其出栈。
`isEmpty()` 函数用来检查堆栈是否为空,即 `top` 是否小于0。
`isFull()` 函数用来检查堆栈是否已满,即 `top` 是否大于等于 MAX_SIZE - 1。
在 `main()` 函数中,我们首先调用 `createStack()` 函数创建一个空的堆栈,然后使用 `push()` 函数将三个元素入栈。接着使用 `peek()` 函数查看堆栈顶部的元素,并使用 `pop()` 函数将所有元素出栈并输出。
阅读全文