C 基于数组存储的堆栈实现
时间: 2024-05-07 20:20:19 浏览: 18
以下是基于数组存储的堆栈实现的 C 代码:
```c
#include <stdio.h>
#define MAX_SIZE 100 // 堆栈最大容量
int stack[MAX_SIZE]; // 堆栈数组
int top = -1; // 栈顶指针
// 入栈操作
void push(int data) {
if (top == MAX_SIZE - 1) { // 判断堆栈是否已满
printf("Stack overflow!\n");
return;
}
top++; // 栈顶指针加1
stack[top] = data; // 将数据压入堆栈
}
// 出栈操作
int pop() {
int data;
if (top == -1) { // 判断堆栈是否为空
printf("Stack is empty!\n");
return -1;
}
data = stack[top]; // 将栈顶数据取出
top--; // 栈顶指针减1
return data;
}
// 获取栈顶元素
int peek() {
if (top == -1) { // 判断堆栈是否为空
printf("Stack is empty!\n");
return -1;
}
return stack[top]; // 返回栈顶元素
}
// 判断堆栈是否为空
int is_empty() {
return top == -1;
}
// 判断堆栈是否已满
int is_full() {
return top == MAX_SIZE - 1;
}
// 打印堆栈元素
void print_stack() {
int i;
if (is_empty()) { // 判断堆栈是否为空
printf("Stack is empty!\n");
return;
}
printf("Stack elements are: ");
for (i = top; i >= 0; i--) { // 从栈顶开始遍历堆栈
printf("%d ", stack[i]);
}
printf("\n");
}
int main() {
push(10);
push(20);
push(30);
print_stack(); // 30 20 10
printf("Poped element: %d\n", pop()); // 30
printf("Peeked element: %d\n", peek()); // 20
print_stack(); // 20 10
return 0;
}
```
以上代码实现了堆栈的基本操作,包括入栈、出栈、获取栈顶元素、判断堆栈是否为空或已满、打印堆栈元素。