C语言顺序栈
作者:野牛程序员:2023-08-23 11:38:54C语言阅读 2940
顺序栈是一种基于数组实现的栈数据结构,它遵循后进先出(LIFO)的原则。栈有两个基本操作:压栈(入栈)和弹栈(出栈)。在 C 语言中,可以使用数组来实现顺序栈。以下是一个简单的顺序栈的示例:
#include <stdio.h>
#include <stdbool.h>
#define MAX_SIZE 100 // 栈的最大容量
typedef struct {
int data[MAX_SIZE];
int top; // 栈顶指针
} Stack;
// 初始化栈
void initStack(Stack *stack) {
stack->top = -1; // 空栈的 top 初始化为 -1
}
// 判断栈是否为空
bool isEmpty(Stack *stack) {
return stack->top == -1;
}
// 判断栈是否已满
bool isFull(Stack *stack) {
return stack->top == MAX_SIZE - 1;
}
// 入栈操作
void push(Stack *stack, int value) {
if (isFull(stack)) {
printf("栈已满,无法入栈\\n");
return;
}
stack->data[++(stack->top)] = value;
}
// 出栈操作
int pop(Stack *stack) {
if (isEmpty(stack)) {
printf("栈为空,无法出栈\\n");
return -1; // 返回一个特殊值表示出栈失败
}
return stack->data[(stack->top)--];
}
// 获取栈顶元素
int peek(Stack *stack) {
if (isEmpty(stack)) {
printf("栈为空\\n");
return -1; // 返回一个特殊值表示栈为空
}
return stack->data[stack->top];
}
int main() {
Stack stack;
initStack(&stack);
push(&stack, 10);
push(&stack, 20);
push(&stack, 30);
printf("栈顶元素:%d\\n", peek(&stack));
printf("出栈元素:%d\\n", pop(&stack));
printf("出栈元素:%d\\n", pop(&stack));
printf("栈顶元素:%d\\n", peek(&stack));
return 0;
}在这段代码中,Stack 结构表示顺序栈,通过 top 来指示栈顶元素的位置。initStack 初始化栈,isEmpty 和 isFull 分别检查栈是否为空或已满。push 实现入栈操作,pop 实现出栈操作,peek 获取栈顶元素而不出栈。
这只是顺序栈的一个简单示例,实际应用中可能需要更多的错误检查和优化。顺序栈适用于存储大小固定的数据,如果需要动态扩展,可以考虑使用链式栈。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:C语言检测用户键盘输入数据的合法性
- 下一篇:C语言数制转换
