用c语言实现堆栈的顺序排列
时间: 2024-11-21 21:29:04 浏览: 8
链表类和链表结点类定义(继承方式)-c数据结构课件
在C语言中,我们可以使用数组或动态内存分配来实现一个简单的堆栈(Stack)。这里是一个基本的顺序堆栈(也称为简单堆栈)的实现示例,它使用数组作为存储结构:
```c
#include <stdio.h>
#define MAX_SIZE 100 // 堆栈的最大容量
typedef struct {
int data[MAX_SIZE]; // 存储元素的数据部分
int top; // 栈顶指针,表示当前元素的位置
} Stack;
// 初始化堆栈
void init(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->data[++s->top] = value;
} else {
printf("堆栈已满,无法添加元素.\n");
}
}
// 弹出并返回堆栈顶部的元素
int pop(Stack *s) {
if (!isEmpty(s)) {
return s->data[s->top--];
} else {
printf("堆栈为空,无法弹出元素.\n");
return -1; // 返回特殊值,表示错误
}
}
// 打印堆栈内容
void printStack(Stack *s) {
for (int i = 0; i <= s->top; i++) {
printf("%d ", s->data[i]);
}
printf("\n");
}
int main() {
Stack stack;
init(&stack);
push(&stack, 5);
push(&stack, 10);
push(&stack, 15);
printStack(&stack); // 输出: 15 10 5
printf("Popped element: %d\n", pop(&stack)); // 输出: Popped element: 5
return 0;
}
```
阅读全文