• 栈的基本操作以及C语言实现


    栈的基本操作:
    1.Push:将元素压入栈顶。
    2.Pop:从栈顶弹出元素。
    3.Top:获取栈顶元素。
    4.IsEmpty:检查栈是否为空。
    5.IsFull:检查栈是否已满。
    代码实现:

    #include 
    
    #define MAX_SIZE 100
    
    // 定义栈结构
    typedef struct {
        int data[MAX_SIZE];
        int top;
    } Stack;
    
    // 初始化栈
    void initStack(Stack *stack) {
        stack->top = -1;
    }
    
    // 入栈操作
    void push(Stack *stack, int value) {
        if (stack->top == MAX_SIZE - 1) {
            printf("入不了\n");
            return;
        }
        stack->top++;
        stack->data[stack->top] = value;
    }
    
    // 出栈操作
    int pop(Stack *stack) {
        if (stack->top == -1) {
            printf("出不去.\n");
            return -1; // 
        }
        int value = stack->data[stack->top];
        stack->top--;
        return value;
    }
    
    // 获取栈顶元素
    int top(Stack *stack) {
        if (stack->top == -1) {
            printf("空.\n");
            return -1; // 返回一个特定的错误值
        }
        return stack->data[stack->top];
    }
    
    // 检查栈是否为空
    int isEmpty(Stack *stack) {
        return stack->top == -1;
    }
    
    // 检查栈是否已满
    int isFull(Stack *stack) {
        return stack->top == MAX_SIZE - 1;
    }
    
    int main() {
        Stack stack;
        initStack(&stack);
    
        push(&stack, 10);
        push(&stack, 20);
        push(&stack, 30);
    
        printf("栈顶: %d\n", top(&stack));
    
        while (!isEmpty(&stack)) {
            printf("出栈值: %d\n", pop(&stack));
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
  • 相关阅读:
    Sfdp 超级表单开发平台 V6.0.4 正式发布
    亚马逊云科技 云技能孵化营——我的云技能之旅
    pb:类定义查找函数
    腾讯云微搭低代码平台如何连接其他应用/软件?
    基于R语言绘制GGE双标图2
    C++学习(2):分配器allocator
    微信小程序登录后端
    CentOS 7 安装Java环境
    java lambda表达式自定义排序
    IO流的讲解(3)
  • 原文地址:https://blog.csdn.net/wasane/article/details/133802030