C语言实现顺序栈初始化栈顶为-1源代码
时间: 2024-10-17 21:14:22 浏览: 35
在C语言中,可以使用数组来实现一个简单的顺序栈,通常我们会将栈顶元素的位置表示为-1,表示栈为空。下面是一个基本的栈结构体定义以及初始化函数的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义栈的最大容量
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int top; // 栈顶指针,初始值为 -1 表示空栈
} Stack;
// 初始化函数,创建并初始化一个新的栈
Stack* init_stack() {
Stack *s = (Stack*)malloc(sizeof(Stack));
s->top = -1;
return s;
}
void push(Stack *s, int value) {
if (s->top == MAX_SIZE - 1) {
printf("Stack overflow.\n");
return;
}
s->data[++(s->top)] = value;
}
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack underflow.\n");
return -1; // 返回错误代码
}
return s->data[s->top--];
}
int main() {
Stack *stack = init_stack();
// 使用栈...
return 0;
}
```
在这个例子中,`init_stack()` 函数用于创建一个新的栈,并将其栈顶设置为 -1。然后你可以通过 `push()` 和 `pop()` 函数来操作栈。
阅读全文