C语言算法

C语言数据结构之栈

/*栈的演示*/
#include <stdio.h>
#include <stdlib.h> //为了用malloc函数
/*声明结构体数据类型,用于描述栈的属性*/
typedef struct stack {
    int *arr; //栈的首地址
    int cap; //栈的容量
    int top; //栈顶,便于入栈和出栈
}stack_t;
/*定义初始化栈的函数*/
void stack_init(stack_t *stack, int cap){
    stack->arr = (int *)malloc(cap * sizeof(int)); //分配10个数的内存
    stack->cap = cap; //指定容量为10个数
    stack->top = 0; //一开始为空栈
}
/*定义释放栈内存资源函数*/
void stack_del(stack_t *stack){
    free(stack->arr); //释放内存
    stack->cap = 0; 
    stack->top = 0;
}
/*定义判断栈满的函数*/
int stack_full(stack_t *stack){
    return stack->top >= stack->cap; //满返回1,不满返回0
}
/*定义判断栈空的函数*/
int stack_empty(stack_t *stack) {
    return !stack->top; //空(top=0)返回1,不空返回0
}
/*定义入栈函数,将数据保存到栈中*/
void stack_push(stack_t *stack, int data){
    stack->arr[stack->top++] = data;
}
/*定义出栈函数,从栈中取出数据*/
int stack_pop(stack_t *stack) {
    return stack->arr[--stack->top];
}
int main(void){
    //1.定义栈
    stack_t stack;
    //2.初始化栈
    stack_init(&stack, 10); //栈的容量为10个数
    //3.判断栈满和栈空
    int ret = 0;
    ret = stack_full(&stack);
    printf("%s\n", ret ?"满":"不满");
    ret = stack_empty(&stack);
    printf("%s\n", ret ?"空":"不空");
    //4.向栈中保存10个数据
    int i = 250;
    while(!stack_full(&stack)) {
        stack_push(&stack, i++);
    }
    //5.从栈中取出数据并且打印
    while(!stack_empty(&stack)) {
        printf("%d\n", stack_pop(&stack));
    }
    //释放栈
    stack_del(&stack);
    return 0;
}

流程解析:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值