c语言创建一个顺序栈并实现基础操作
时间: 2024-11-03 13:23:33 浏览: 35
在C语言中,我们可以手动创建一个简单的顺序栈结构,通过数组来实现。首先,定义一个数组作为栈底,然后定义两个变量top来跟踪栈顶元素的位置以及一个常量MAX_SIZE作为栈的最大容量。
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE]; // 存储栈内数据的数组
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 入栈操作 (压栈)
void push(Stack *s, int value) {
if (is_full(s)) {
printf("Stack overflow.\n");
return;
}
s->data[++s->top] = value;
}
// 出栈操作 (弹栈)
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow.\n");
return -1; // 返回错误值表示出错
}
return s->data[s->top--];
}
// 获取栈顶元素但不删除它
int peek(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
return -1; // 表示错误
}
return s->data[s->top];
}
// 打印栈内容
void print_stack(Stack *s) {
if (is_empty(s)) {
printf("Stack is empty.\n");
} else {
for (int i = 0; i <= s->top; ++i) {
printf("%d ", s->data[i]);
}
printf("\n");
}
}
```
阅读全文