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

数据结构-栈(核心代码)

顺式结构

#define _CRT_SECURE_NO_WARNINGS 1 //栈的顺式结构 #include<stdio.h> #define MAXSIZE 100 typedef int Elemtype; //定义栈 typedef struct stack { Elemtype data[MAXSIZE]; int top; }Stack; //初始化栈 void initstack(Stack* S) { S->top = -1; } //判断栈是否为空 int isempty(Stack* S) { if (S->top == -1) { printf("空的\n"); return 1; } else { return 0; } } //进栈/压栈 int pushStack(Stack* S,Elemtype e) { if (S->top >= MAXSIZE - 1) { printf("满了\n"); return 0; } S->top++; S->data[S->top] = e; return 1; } //出栈 int pop(Stack* S, Elemtype* e) { if (S->top >= MAXSIZE - 1) { printf("满了\n"); return 0; } *e = S->data[S->top]; S->top--; return 1; } //获取栈顶元素 int get_top(Stack* S, Elemtype* e) { if (S->top == -1) { printf("空的\n"); return 0; } *e = S->data[S->top]; return 1; } int main() { Stack S; initstack(&S); pushStack(&S,10); pushStack(&S,20); pushStack(&S,30); Elemtype e; pop(&S, &e); printf("%d\n", e); get_top(&S, &e); printf("%d\n", e); return 0; } //动态内存分配定义和初始化栈 #include<stdlib.h> #define MAXSIZE 100 typedef int Elemtype; typedef struct stack { Elemtype* data; int top; }Stack; Stack* initstack(Stack* S) { Stack* S = (Stack*)malloc(sizeof(Stack)); S->data = (Elemtype*)malloc(sizeof(Elemtype)*MAXSIZE); S->top = -1; return S; }

链式结构

#define _CRT_SECURE_NO_WARNINGS 1 //栈的链式结构 #include<stdio.h> #include<stdlib.h> typedef int Elemtype; #define MAXSIZE 100 //定义栈 typedef struct stack { Elemtype data; struct stack* Next;//栈顶 }Stack; //初始化栈 Stack* initstack() { Stack* S = (Stack*)malloc(sizeof(Stack)); S->data = 0; S->Next = NULL; return S; } //判断栈是否为空 int isEmpty(Stack* S) { if (S->Next == NULL) { printf("空的\n"); return 1; } else { return 0; } } //进展/压栈(相当于头插法,链式结构的栈只能头插法不能尾插法) int push(Stack* S, Elemtype e) { Stack* P = (Stack*)malloc(sizeof(Stack)); P->data = e; P->Next = S->Next; S->Next = P; return 1; } //出栈 int pop(Stack* S, Elemtype* e) { if (S->Next == NULL) { printf("空的\n"); return 0; } *e = S->Next->data; Stack* Q = S->Next; S->Next = Q->Next; free(Q); return 1; } //获取栈顶元素 int get_top(Stack* S, Elemtype* e) { if (S->Next == NULL) { printf("空的\n"); return 0; } *e = S->Next->data; return 1; } int main() { Stack* S = initstack(); isEmpty(S); push(S, 10); push(S, 20); push(S, 30); push(S, 40); Elemtype e; pop(S, &e); printf("%d\n", e); get_top(S, &e); printf("%d\n", e); return 0; }
http://www.cnnetsun.cn/news/10410.html

相关文章:

  • 哔哩下载姬:解锁B站视频离线收藏的终极方案
  • 关于电脑端抓包小程序的3种方法,黑客技术零基础入门到精通教程
  • AMD Nitro-E:轻量级文本到图像扩散模型家族的技术突破与性能解析
  • AI学习与职业发展:一次关于证书与能力的真实思考
  • 详细描述一条 SQL 在 MySQL 中的执行过程
  • 一文读懂GLM-Edge-4B-Chat:轻量化大模型如何重塑边缘智能应用新生态
  • Ubuntu22.04 5080配置深度学习环境
  • Wan2.2-T2V-A14B在虚拟演唱会背景制作中的大规模应用
  • Windows右键菜单清理与定制全攻略:ContextMenuManager高效使用指南
  • nginx实战-PHP——day2
  • 知识扩展--从病理学角度比较来自同一组织切片的Xenium 5K与Visium HD数据
  • 基于Wan2.2-T2V-A14B的AI导演系统原型设计思路
  • 【苍穹外卖-day12】
  • 金融项目的测试过程(额度申请审核的测试点设计)
  • C# AES加密在医疗系统中的真实应用案例(含完整源码与审计建议)
  • java计算机毕业设计球鞋商城系统小程序 基于SpringBoot的潮鞋微商城小程序设计与实现 JavaWeb限量球鞋交易平台小程序开发
  • Wan2.2-T2V-A14B能否生成黑白老电影风格?怀旧滤镜测试
  • 终极指南:原神自动化工具BetterGI完整使用手册
  • 在Linux中如何查看内存使用情况?
  • CompletableFuture的5大坑!
  • **主题:** “医疗PINN漏物理约束,器官运动预测全错,补动力学方程才稳住”
  • KMPlayer播放器中文版下载安装保姆级教程(附电脑安装包,非常详细)
  • 【量子电路可视化终极指南】:手把手教你用VSCode打造高效开发环境
  • Skyhigh Security升级数据安全态势管理(DSPM)能力,助力企业满足《数字个人数据保护法》(DPDPA)合规要求,强化亚太地区数据保护
  • Wan2.2-T2V-A14B与Stable Video Diffusion对比:谁更适合商用?
  • 如何用AU处理音乐详细的元数据Metadata-程序员·原创音乐人·卓伊凡
  • MobaXterm高效运维
  • 百度ERNIE-4.5-VL-28B-A3B-Base震撼发布:多模态大模型基座开启智能新纪元
  • Wan2.2-T2V-A14B + 高性能GPU:构建专属AI视频工厂
  • 3分钟掌握B站视频下载:哔哩下载姬终极使用指南