C语言顺序栈
作者:野牛程序员:2023-08-23 11:38:54C语言阅读 2736
顺序栈是一种基于数组实现的栈数据结构,它遵循后进先出(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语言数制转换