你可以用C语言帮我写出一个顺序栈吗
时间: 2023-06-04 21:03:26 浏览: 75
当然可以,以下是一个简单的顺序栈的代码:
```c
#define MAXSIZE 100 // 定义栈的最大容量为100
typedef struct {
int data[MAXSIZE]; // 存储数据的数组
int top; // 栈顶指针
} Stack;
Stack *init_stack() {
Stack *s = (Stack *)malloc(sizeof(Stack));
s->top = -1; // 栈顶指针初始化为-1
return s;
}
int is_empty(Stack *s) {
return s->top == -1; // 判断栈是否为空
}
int is_full(Stack *s) {
return s->top == MAXSIZE - 1; // 判断栈是否已满
}
int push(Stack *s, int x) {
if (is_full(s)) {
return 1; // 栈已满,插入失败
}
s->top++; // 栈顶指针加1
s->data[s->top] = x; // 将元素x插入栈顶
return 0; // 插入成功
}
int pop(Stack *s) {
if (is_empty(s)) {
return -1; // 栈为空,弹出失败
}
int x = s->data[s->top]; // 取出栈顶元素
s->top--; // 栈顶指针减1
return x; // 返回栈顶元素
}
int get_top(Stack *s) {
if (is_empty(s)) {
return -1; // 栈为空,获取栈顶元素失败
}
return s->data[s->top]; // 获取栈顶元素
}
void destroy_stack(Stack *s) {
free(s); // 销毁栈
}
```
这是一个基本的顺序栈的实现,你可以根据自己的实际需要对其中的代码进行修改和优化。