c语言弹栈压栈
更新时间:2023-09-18前言
栈(Stack)是一种常见的数据结构,它的特点是"先进后出",类似于我们平时堆放书籍的方式。弹栈(Pop)指从栈顶移除一个元素,压栈(Push)指向栈顶添加一个元素。在C语言中,我们可以使用数组来实现栈的功能。
代码实现
#include// 定义栈结构 #define MAX_SIZE 10 // 栈最大容量 int stack[MAX_SIZE]; // 栈数组 int top = -1; // 栈顶指针,初始值为-1 // 判断栈空 int isEmpty() { return top == -1; } // 判断栈满 int isFull() { return top == MAX_SIZE - 1; } // 压栈 void push(int value) { if (isFull()) { printf("栈满,无法压栈\n"); return; } stack[++top] = value; printf("压栈成功,压入元素:%d\n", value); } // 弹栈 int pop() { if (isEmpty()) { printf("栈空,无法弹栈\n"); return -1; } return stack[top--]; }
代码解释
上述代码通过定义一个数组作为栈结构,以及一个指针指示栈顶位置。我们使用了两个辅助函数来判断栈空和栈满的状态,分别为isEmpty和isFull。push函数用于将元素压入栈中,首先会检查栈是否已满,若已满则提示"栈满,无法压栈"。否则,将元素加入栈顶,并将top指针向上移动一位。pop函数用于弹栈,首先会检查栈是否为空,若为空则提示"栈空,无法弹栈"并返回-1。否则,返回栈顶元素,并将top指针向下移动一位。
总结
通过以上代码,我们实现了C语言的弹栈压栈功能。这个栈结构可以储存整数类型的数据,栈的最大容量可以通过修改MAX_SIZE的值进行自定义。通过调用push函数将元素压栈,调用pop函数弹栈,可以对栈进行操作。同时,我们通过isEmpty和isFull函数可以判断栈的状态。