当前位置: 首页 > 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.jsqmd.com/news/73808/

相关文章:

  • MiMo Audio横空出世:音频语言模型迈入少样本学习新纪元
  • 市场运营年终PPT生成效率榜:AI工具真实体验排名
  • Universal x86 Tuning Utility:终极Intel CPU电压调节解决方案揭秘
  • R语言量子计算模拟资源稀缺曝光:仅剩5个开源包可实战,别再错过
  • 混合检索策略的Dify配置优化(高阶调优秘籍)
  • Wan2.2-T2V-A14B在地震断层错动模拟中的地质力学还原
  • Raft算法(三)
  • Wan2.2-T2V-A14B能否生成体育赛事精彩集锦?AI解说联动构想
  • 2025 年 12 月江苏省骨科医院权威推荐榜:骨科专科/医保工伤定点,专业诊疗与康复实力深度解析 - 品牌企业推荐师(官方)
  • Day26:ADC+DAC 综合应用
  • 先整个三相LC滤波的Simulink模型框架出来——三相全桥逆变器接LC滤波,后边挂个电网。重点在于怎么让并网电流波形干净,THD控制在5%以内
  • 2025年无锡奢侈品回收权威推荐榜:名表、名包、黄金、钻石、翡翠专业鉴定与高价变现服务之选 - 品牌企业推荐师(官方)
  • C#数组操作:快速查找与条件判断技巧
  • Git 推送远程仓库全攻略:GitHub + Gitee 的 HTTP 和 SSH 四种方式详细对比与实操步骤(2025最新版)
  • Wan2.2-T2V-A14B在宠物行为教学视频中的拟人化表达
  • SVPWM怎么就比SPWM电压利用率高出了15.5%????
  • Wan2.2-T2V-A14B在房地产VR看房系统中的集成路径
  • 程序员在AI时代的技能升级与转型方法
  • RJ45接口8根线分别是什么用途
  • AI如何实现玛丽·巴芙的质量增长型公司识别
  • 豆包AI手机:一部被封杀却炒到近万的手机,暗藏怎样的行业生死战?
  • 终极指南:打造高效B站视频下载神器DownKyi - 从零掌握8K超清资源批量获取
  • 51、Linux 系统故障排除实用指南
  • AI学习与职业发展:一次关于证书与能力的真实思考
  • 智源发布多模态大模型Emu3.5:开创视觉语言融合新纪元,推理速度提升20倍
  • AMD Nitro-E:轻量级文本到图像扩散模型家族的技术突破与性能解析
  • 52、Linux系统管理与网络服务配置全解析
  • 32B参数新标杆:DeepSeek-R1-Distill-Qwen-32B如何应对企业AI落地挑战
  • 2350亿参数开源巨兽深度剖析:Qwen3-235B-A22B推理引擎架构全解析与部署指南
  • Qwen3-1.7B-FP8震撼发布:轻量化开源大模型开启高效AI应用新纪元