当前位置: 首页 > ai >正文

C语言实现简单的—栈

1,源码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>#define STACK_SIZE 10typedef struct stack{int data[STACK_SIZE];int top;
}SStack;SStack * CreateStack()
{return (SStack *)calloc(1, sizeof(SStack));
}int init_stack(SStack *st)
{if(!st) {printf("%s: stack is failed.\n", __FUNCTION__);return -1;}st->top = -1;//置为-1表示栈底memset( st->data, 0, sizeof(st->data));return 0;
}int StackFull(SStack *st)
{return st->top == (STACK_SIZE - 1);
}int StackEmpty(SStack *st)
{return st->top == (-1);
}int push_stack(SStack *st, int dat)
{if(!StackFull(st)){st->top++;st->data[st->top] = dat;return 0;}else {printf("%s: stack is full.\n", __FUNCTION__);return -1;}}int pop_stack(SStack *st, int *dat)
{if(StackEmpty(st)){printf("%s: stack is empty.\n", __FUNCTION__);return -1;}else{*dat = st->data[st->top];st->top--;return 0;}}int main()
{int i = 0;int dat = 0;SStack * pstack  = (SStack *)CreateStack();init_stack(pstack);for(i =0 ; i<12; i++){push_stack(pstack, i);}i =0;printf("-1-->top: %d\n", pstack->top);while(!pop_stack(pstack, &dat)){printf("index: %d, dat: %d\n", i, dat);i++;usleep(1000);//出现错误时,防止cpu跑s}printf("-2-->top: %d\n", pstack->top);
}

2,总结

        ① 这里实现的是用数组实现的栈,栈的初始化需要将top = -1;

        ② 入栈操作需要判断full (top == max -1),出栈操作需要判断NULL (top == -1)

        ③ 方便后续查看

http://www.xdnf.cn/news/6624.html

相关文章:

  • 【漫话机器学习系列】261.工具变量(Instrumental Variables)
  • 从验证码绕过到信息轰炸:全面剖析安全隐患与防范策略
  • 网络流量分析 | NetworkMiner
  • activeMq 限制用户接收topic范围
  • Vue2项目中使用videojs播放mp4视频
  • EWOMAIL
  • Go语言实现生产者-消费者问题的多种方法
  • 【C++重载操作符与转换】句柄类与继承
  • 自定义CString类与MFC CString类接口对比
  • eSwitch manager 简介
  • InfluxDB 2.7 连续查询实战指南:Task 替代方案详解
  • python中元组的操作
  • 后端框架(2):Java的反射机制
  • 高效便捷的文字识别方案与解析
  • MATLAB中的概率分布生成:从理论到实践
  • 记录一次服务器卡顿
  • Redisson分布式锁-锁的可重入、可重试、WatchDog超时续约、multLock联锁(一文全讲透,超详细!!!)
  • SD框架下 LoRA 训练教程3-LORA学习率调度器(Learning Rate Scheduler)核心策略与实践指南
  • C++_STL_map与set
  • Java【13_1】final、初始化块、继承(测试题)
  • 每日Prompt:迷你 3D 建筑
  • pcie phy-电气层-gen1/2(TX)
  • C++ 条件变量与线程通知机制:std::condition_variable
  • PD 分离推理的加速大招,百度智能云网络基础设施和通信组件的优化实践
  • 【data】上海膜拜数据
  • AWS云入门宝典
  • STM32外设AD/DA-基础及CubeMX配置
  • Web性能优化的未来:边缘计算、AI与新型渲染架构
  • 排序01:多目标模型
  • SQL Server权限设置的几种方法