数据结构3.0 栈、队列和数组

一、栈的基本概念

①栈的定义

②栈的基本操作

③常考题型

④小结

二、栈的顺序存储实现

①顺序栈的定义

②初始化操作

③进栈操作

④出栈操作

⑤读栈顶元素操作

⑥共享栈

⑦小结

三、栈的链式存储实现

①链栈的定义

②小结

#include <stdio.h> #include <stdlib.h> // 链栈的结点结构 typedef struct LinkNode { int data; // 数据域 struct LinkNode *next; // 指针域 } LinkNode; // 链栈结构(不带头结点,栈顶指针直接指向栈顶元素) typedef struct { LinkNode *top; // 栈顶指针 } LinkStack; // 1. 初始化链栈 void InitStack(LinkStack &S) { S.top = NULL; // 空栈时栈顶指针为NULL } // 2. 判断栈是否为空 bool StackEmpty(LinkStack S) { return S.top == NULL; } // 3. 进栈操作(增) bool Push(LinkStack &S, int x) { // 生成新结点 LinkNode *p = (LinkNode *)malloc(sizeof(LinkNode)); if (p == NULL) return false; // 内存分配失败 p->data = x; p->next = S.top; // 新结点的next指向原栈顶 S.top = p; // 更新栈顶指针 return true; } // 4. 出栈操作(删) bool Pop(LinkStack &S, int &x) { if (StackEmpty(S)) return false; // 栈空,出栈失败 LinkNode *p = S.top; // 指向栈顶结点 x = p->data; // 获取栈顶元素 S.top = S.top->next; // 栈顶指针下移 free(p); // 释放原栈顶结点 return true; } // 5. 获取栈顶元素(查) bool GetTop(LinkStack S, int &x) { if (StackEmpty(S)) return false; // 栈空,获取失败 x = S.top->data; return true; } // 测试函数 int main() { LinkStack S; InitStack(S); // 进栈 Push(S, 1); Push(S, 2); Push(S, 3); // 获取栈顶 int topVal; if (GetTop(S, topVal)) { printf("栈顶元素:%d\n", topVal); } // 出栈 int popVal; while (Pop(S, popVal)) { printf("出栈元素:%d\n", popVal); } // 判空 if (StackEmpty(S)) { printf("栈已为空\n"); } return 0; }

四、队列的基本概念

①队列的定义

②队列的基本操作

③小结

五、队列的顺序实现

①初始化操作

②入队操作

③循环队列

④循环队列——入队操作

⑤循环队列——出队操作

⑥判断队列已满/已空

⑦小结

六、队列的链式实现

①初始化(带头结点)

②初始化(不带头结点)

③入队(带头结点)

④入队(不带头结点)

⑤出队(带头结点)

⑥出队(不带头结点)

⑦队列满的条件

⑧小结

七、双端队列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算子优化实战:手写 Triton Kernel,将 LayerNorm 算子的执行时间压缩 50%

标签: #Triton #CUDA #AICompiler #HPC #PyTorch #LayerNorm 📉 前言:为什么 PyTorch 原生算子还不够快? PyTorch 的 torch.nn.LayerNorm 虽然底层调用了 cuDNN 或 ATen 的优化实现,但在处理特定 Shape 或与其他算子结合时,依然存在性能损耗: 显存带宽瓶颈:LayerNorm…

深度测评自考必备一键生成论文工具TOP8

深度测评自考必备一键生成论文工具TOP8 自考论文写作工具测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着自考人数逐年攀升&#xff0c;论文写作成为众多考生面临的“拦路虎”。从选题构思到内容撰写&#xff0c;再到格式调整&#xff0c;每一个环节都可能成为拖延或出…

Linux实操篇

1.1.vim快速入门1.2 vim快捷键1.3用户关机重启1.4登录注销 2.1用户管理12.2用户管理2

51单片机智能遮阳篷窗户帘衣架蓝牙APP光雨滴检测41(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

51单片机智能遮阳篷窗户帘衣架蓝牙APP光雨滴检测41(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 产品功能描述&#xff1a; 本系统由STC89C52单片机、雨滴传感器、光照传感器、蓝牙模块、继电器、拨动开关及电源组成 1、可以…

Java 并发探秘:JCTools 源码剖析,为什么 Netty 放弃 JDK 自带队列而选择 MpscArrayQueue?

标签&#xff1a; #Java #Netty #JCTools #Concurrency #Performance #FalseSharing&#x1f422; 前言&#xff1a;JDK 队列的痛点 在 Netty 的 Reactor 线程模型中&#xff0c;EventLoop 本质上是一个单线程的执行器。 它需要处理两类任务&#xff1a; IO 事件&#xff1a;来…

todo

todo作者很懒,所以经常会立flag,这里是他写下的todo list QAQtodo 创建时间 状态埃氏筛分块筛法 26/1/18 未完成

Go 调度器 (GMP) 揭秘:从汇编角度看 Goroutine 是如何实现“协程切换”的?

标签&#xff1a; #Go #Golang #GMP #Assembly #Runtime #Concurrency&#x1f680; 前言&#xff1a;GMP 的本质是“复用” 操作系统线程&#xff08;OS Thread&#xff09;太重了。创建一个线程需要 1-8MB 栈内存&#xff0c;切换一次需要进入内核态&#xff0c;耗时 1-2 微秒…

【创新未发表】基于matlab鸡群算法CSO和自适应双种群协同鸡群算法ADPCCSO无人机避障三维航迹规划【含Matlab源码 14980期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

第 174 场双周赛Q2——3810. 变成目标数组的最少操作次数

题目链接&#xff1a;3810. 变成目标数组的最少操作次数&#xff08;中等&#xff09; 算法原理&#xff1a; 解法&#xff1a;模拟 38ms击败11.30% 时间复杂度O(N) ①先计算出哪些是需要修改的 ②统计需要修改的下标 ③原数组中相同的数可以一起修改&#xff0c;所以只要统计不…

【无人机三维路径规划】基于matlab鸡群算法CSO和自适应双种群协同鸡群算法ADPCCSO复杂山地模型下无人机路径规划【含Matlab源码 14981期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

Day22-20260118

摘要 本文实现了一个基于Java的交互式计算器程序,具有加减乘除四种运算功能。程序通过定义四个独立的方法(add、subtract、multiply、divide)实现基本运算,采用while循环和switch结构实现用户交互界面。用户可以循环…

强烈安利9个AI论文写作软件,专科生搞定毕业论文!

强烈安利9个AI论文写作软件&#xff0c;专科生搞定毕业论文&#xff01; 论文写作的救星&#xff0c;AI 工具如何改变你的学术之路 对于专科生来说&#xff0c;毕业论文可能是大学生活中最令人头疼的一关。从选题、查资料到撰写、修改&#xff0c;每一步都充满了挑战。而如今&a…

【雷达跟踪】基于matlab面向目标跟踪的雷达干扰方法:提升航空器战场生存力的关键技术【含Matlab源码 14983期】复现含文献

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

【雷达相控阵】毫米波相控阵中空间Zadoff-Chu调制快速波束对准【含Matlab源码 14977期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…

卷积神经网络的开端:$LeNet-5$

卷积神经网络的开端:\(LeNet-5\)[!NOTE] LeNet-5神经网络是1998年YANN LECUN等人在论文Gradient-Based Learning Applied to Document Recognition中提出的一种颠覆性的算法。 说实在的该方法本来是用来解决手写字母也…

【雷达相控阵】基于matlab毫米波相控阵中空间Zadoff-Chu调制快速波束对准【含Matlab源码 14977期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

【心电信号ECG】SVM心电图心搏检测与分类【含Matlab源码 14982期】复现含文献

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…

【心电信号ECG】基于matlab SVM心电图心搏检测与分类【含Matlab源码 14982期】复现含文献

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

【心血管疾病】心脏病数据集Kaggle医学特征二元分类预测心血管疾病【含Matlab源码 14984期】含报告

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…

社交网络数据科学:完整项目实战指南

社交网络数据科学&#xff1a;完整项目实战指南 引言 痛点引入&#xff1a;你可能遇到的「社交网络分析困境」 作为数据科学爱好者&#xff0c;你是否曾有过这样的困惑&#xff1a; 想学社交网络分析&#xff0c;但看着「图论」「中心性」「社区发现」等术语望而却步&#…