C语言实现栈的定义,初始化,入栈,出栈,并求栈的长度
时间: 2024-09-23 18:01:23 浏览: 21
在C语言中,栈是一种线性的数据结构,它遵循后进先出(LIFO,Last In First Out)的原则。下面是如何简单地使用数组来实现一个基本的栈:
```c
#include <stdio.h>
#define MAX_SIZE 100
// 定义栈结构体
typedef struct {
int top; // 栈顶指针
int data[MAX_SIZE]; // 存储数据的数组
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1; // 初始时栈为空,top置为-1
}
// 入栈操作 (push)
void push(Stack *s, int value) {
if (s->top >= MAX_SIZE - 1) { // 检查是否已满
printf("Stack overflow!\n");
return;
}
s->data[++(s->top)] = value; // 更新栈顶元素并增加top
printf("Value %d pushed to stack.\n", value);
}
// 出栈操作 (pop)
int pop(Stack *s) {
if (s->top == -1) { // 检查是否为空
printf("Stack underflow!\n");
return -1; // 返回错误码
}
int value = s->data[s->top]; // 获取栈顶元素
s->top--; // 移除栈顶元素,减小top
return value; // 返回出栈的值
}
// 求栈的长度 (即元素个数)
int get_stack_length(Stack *s) {
return s->top + 1; // 因为top是索引,所以加上1得到实际长度
}
int main() {
Stack myStack;
init(&myStack);
push(&myStack, 5);
push(&myStack, 10);
push(&myStack, 15);
int poppedValue = pop(&myStack); // 输出: Value 15 popped from stack.
printf("Stack length: %d\n", get_stack_length(&myStack));
return 0;
}
```