c语言编程笔录

首页 >   > 笔记大全

笔记大全

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函数可以判断栈的状态。