#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <limits.h>

// 定义栈的最大大小
#define MAXSIZE 10

// 定义栈的结构体
typedef struct {
    int top;            // 栈顶指针,初始值为-1
    int data[MAXSIZE];  // 存储数据的数组
} Stack;

// 初始化栈,将栈顶指针置为-1
void initStack(Stack *s) {
    s->top = -1;
}

// 判断栈是否为空,栈为空时栈顶指针为-1
bool isEmpty(Stack *s) {
    return s->top == -1;
}

// 判断栈是否已满,栈已满时栈顶指针为MAXSIZE-1
bool isFull(Stack *s) {
    return s->top == MAXSIZE - 1;
}

// 入栈操作,将元素压入栈中
bool push(Stack *s, int value) {
    // 如果栈已满,无法入栈,返回false
    if (isFull(s)) {
        printf("Error: stack is full.\n");
        return false;
    }
    // 栈顶指针加1,将元素压入栈中
    s->top++;
    s->data[s->top] = value;
    return true;
}

// 出栈操作,将栈顶元素弹出栈
int pop(Stack *s) {
    // 如果栈为空,无法出栈,返回INT_MIN
    if (isEmpty(s)) {
        printf("Error: stack is empty.\n");
        return INT_MIN;
    }
    // 取出栈顶元素,栈顶指针减1
    int value = s->data[s->top];
    s->top--;
    return value;
}

int main() {
    // 创建一个栈,初始化栈顶指针为-1
    Stack s;
    initStack(&s);

    // 入栈操作
    push(&s, 1);
    push(&s, 2);
    push(&s, 3);

    // 出栈操作
    int value1 = pop(&s);
    int value2 = pop(&s);
    int value3 = pop(&s);

    // 输出出栈的元素
    printf("%d %d %d\n", value1, value2, value3);

    return 0;
}

上述代码定义了一个栈数据结构,包括栈的最大大小、栈的结构体、初始化栈、判断栈是否为空、判断栈是否已满、入栈操作和出栈操作。在主函数中,创建了一个栈并进行了入栈和出栈操作,最后输出出栈的元素

你好请问C语言中的栈是什么?在计算机科学中栈是一种数据结构它可以存储固定大小的元素集合。栈按先进后出LIFO的原则来保存数据即最后放入栈的元素最先被取出。在C语言中栈通常用于函数调用和局部变量的存储。每当程序调用一个函数时都会将该函数的返回地址和参数值等信息压入栈中。函数执行完毕后会从栈中弹出这些信息并返回到调用函数的位置继续执行。此外在C语言中也可以使用栈来实现一些算法如表达式求值、深度优先搜索

原文地址: https://www.cveoy.top/t/topic/d9rS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录