数据结构——6.链式栈
一、前言栈是后进先出的特殊线性表主流分为顺序栈和链式栈。这一篇讲述的是链式栈。顺序表尾部增删无需移动元素时间复杂度是O1因此顺序栈以数组尾部作为栈顶依靠尾插、尾删完成入栈、出栈。反观单链表访问尾部需要遍历整条链表效率低下而链表头部插入、删除仅修改头指针时间复杂度同样为O(1)。基于该特性链式栈将链表头部作为栈顶通过头插实现Push入栈头删实现Pop出栈全部基础操作均为常数时间复杂度。二、代码实现typedef int ELEMTYPE; //链式栈的有效定义节点 typedef struct LSNode { ELEMTYPE data;//数据域存放栈中存储的元素 struct LSNode* next;//指针域指向栈中下一个节点 }LSNode; //链式栈的辅助节点直接借用有效节点的结构体设计不再单独设计 //1.初始化 void Init_LinkStack(LSNode* pls); //2.入栈 bool Push(LSNode* pls, ELEMTYPE val); //3.出栈 bool Pop(LSNode* pls); //4.获取栈顶元素值 ELEMTYPE Top(LSNode* pls); //5.判空 bool Empty(LSNode* pls); //6.打印 void Show(LSNode* pls); //7.销毁 void Destroy(LSNode* pls);函数1初始化void Init_LinkStack(LSNode* pls) { assert(pls!NULL); pls-nextNULL;//栈为空 }LSNode;2入栈相当于单链表头删bool Push(LSNode* pls, ELEMTYPE val) { //0 assert(pls ! NULL); //1.购买新节点 LSNode* pnewnode (LSNode*)malloc(1 * sizeof(LSNode)); if (NULL pnewnode) exit(EXIT_FAILURE); pnewnode-data val; pnewnode-next NULL; //2.找到合适的插入位置找到插在哪个节点的后面头插比较特殊肯定是插入辅助节点后面 LSNode* p pls; //3.进行插入修改两个指针域 pnewnode-next p-next; p-next pnewnode; return true; }3出栈相当于单链表头删bool Pop(LSNode* pls) { //0 assert(pls ! NULL); //1.判空 if (IsEmpty(pls)) return false; //2.找到待删除节点用指针q指向头删比较特殊q指向第一个节点 LSNode* q pls-next; //3.再找到待删除节点的上家用指针p指向 LSNode* p pls; //4.pq就位跨越指向释放 p-next q-next; free(q); q NULL; return true; }4获取栈顶元素ELEMTYPE Top(LSNode* pls) { assert(pls ! NULL); if (IsEmpty(pls)) return false; return pls-next-data; }5判空bool IsEmpty(LSNode* pls) { //0 assert(pls ! NULL); return pls-next NULL; }6打印bool IsEmpty(LSNode* pls) { //0 assert(pls ! NULL); return pls-next NULL; }7销毁void Destroy(LSNode* pls) { //1. while (!IsEmpty(pls)) { Pop(pls); } // /*LSNode* p pls; LSNode* q pls-next; p-next q-next; free(q); q NULL;*/ }mainint main() { LSNode head; Init_LinkStack(head); Push(head, 12); Push(head, 23); Push(head, 34); Show(head); Pop(head); Show(head); printf(TOP%d\n, Top(head)); Show(head); return 0; }

相关新闻

lucide-react 如何使用:React 图标库安装、定制与迁移速查指南

lucide-react 如何使用:React 图标库安装、定制与迁移速查指南

lucide-react 如何使用:React 图标库安装、定制与迁移速查指南 【免费下载链接】lucide Beautiful & consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons. 项目地址: https://gitcode.com/GitHub_Trending/lu/…

2026/10/11 1:32:30 阅读更多 →
GitHub f/prompts.chat:原名 Awesome ChatGPT Prompt...

GitHub f/prompts.chat:原名 Awesome ChatGPT Prompt...

GitHub f/prompts.chat:原名 Awesome ChatGPT Prompts 的真实价值与自托管部署实践开场断言绝大多数企业级大模型应用场景中,80%的ROI来自于5%的定制化Prompt,而开源社区却鲜少有人系统化利用Prompt库。直接调用大模型API的方案看似高效&…

2026/10/11 1:32:30 阅读更多 →
护理实训多工位怎么同屏对比:调度系统的分屏布局怎么用

护理实训多工位怎么同屏对比:调度系统的分屏布局怎么用

护理实训多工位怎么同屏对比:调度系统的分屏布局怎么用 本文发布于 2026 年 10 月 8 日|最后更新 2026 年 10 月 8 日 场景:多工位分组实训|适用专业:职业院校实训室、产教融合基地、企业内训 结论先行 多工位分组实训…

2026/10/11 1:32:30 阅读更多 →

最新新闻

通达OA 2017授权机制解析与合法注册重建指南

通达OA 2017授权机制解析与合法注册重建指南

简介:本资源提供通达OA 2017版本的注册与授权支持文件,面向企业信息化管理员、OA系统实施人员及二次开发技术人员,用于解决正版授权受限、部署次数受限或功能模块被锁定等实际运维问题。压缩包共5个文件,含2个关键.dat授权数据文件…

2026/10/11 2:24:01 阅读更多 →
论文压缩包文件处理指南:命令行解压、编码转换与损坏修复

论文压缩包文件处理指南:命令行解压、编码转换与损坏修复

简介:面向FPGA脉压工程学习者的完整工程包,由作者在先前分享基础上补齐遗漏内容后重新整理发布,适合需要仿真验证、阅读工程代码与进阶实践的开发者和学生。压缩包共739个文件、约176.42MB,类型覆盖VHDL/Verilog源码(v…

2026/10/11 2:24:01 阅读更多 →
趣博思AI博士毕业论文:读博最痛苦的时刻,是你发现自己的研究“没有意义”

趣博思AI博士毕业论文:读博最痛苦的时刻,是你发现自己的研究“没有意义”

读博的人,大概都经历过这样一个时刻: 你坐在电脑前,看着自己写了半年的稿子,突然冒出一个念头——我做这个东西,到底有什么意义? 这个念头一旦出现,就很难赶走。你开始怀疑自己的研究问题是不是…

2026/10/11 2:24:01 阅读更多 →
STM32 ADC采集光敏传感器:从硬件分压到OLED实时显示全链路实战

STM32 ADC采集光敏传感器:从硬件分压到OLED实时显示全链路实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 2:24:01 阅读更多 →
冰蝎V4.1流量加密后如何检测?蓝队应急响应与内存取证实战

冰蝎V4.1流量加密后如何检测?蓝队应急响应与内存取证实战

简介:冰蝎V4.1 Behinder 是一款面向网络安全测试与渗透测试人员的 Webshell 管理工具,适用于授权环境下的漏洞探测、防御能力验证与安全研究。资源包共 39 个文件,压缩后约 130.19MB,涵盖 jar 主程序、php/jsp/aspx 服务端脚本、j…

2026/10/11 2:24:01 阅读更多 →
基于Spring Boot + Vue的蘑菇百科系统设计与实现指南

基于Spring Boot + Vue的蘑菇百科系统设计与实现指南

毕设选题年年有人纠结,年年有人踩坑。如果你正盯着“XX管理系统”这类老掉牙的题目发愁,或者担心做纯网页展示类项目显得工作量不足,我强烈建议你认真看看“基于Spring Boot Vue的蘑菇百科系统”这个方向。它既有信息管理系统的完整业务链路…

2026/10/11 2:23:00 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →