LeetCode 232.用栈实现队列 C写法

LeetCode 232.用栈实现队列 C写法

image-20240719213123578

思路🧐:

  栈代码在本篇中。与队列实现栈类似,不过这里我们建立两个栈一个栈专门存放入队数据一个专门存放出队数据,不需要再来回导数据。原理在于一个栈的数据到另一个栈中顺序就颠倒了,而颠倒的数据就是队列要出队的顺序。具体思路可以看代码注释。

image-20240719222302961

代码🔎:

typedef struct {ST popst; //用于放出队数据ST pushst; //用于放入队数据
} MyQueue;MyQueue* myQueueCreate() {MyQueue* obj = (MyQueue*)malloc(sizeof(MyQueue));if(obj == NULL){perror("malloc fail");return NULL;}STInit(&obj->popst); //注意要传地址STInit(&obj->pushst);return obj;
}void myQueuePush(MyQueue* obj, int x) {STPush(&obj->pushst, x); //直接push到存数据的栈中
}int myQueuePop(MyQueue* obj) {int front = myQueuePeek(obj); //复用peek函数,取到要出队的数据STPop(&obj->popst); //删除该数据return front;
}int myQueuePeek(MyQueue* obj) {if(STEmpty(&obj->popst)) //当popst为空时,代表全部出完,可以继续放数据进去{while(!STEmpty(&obj->pushst)){STPush(&obj->popst,STTop(&obj->pushst)); //将pushst的数据全部放入STPop(&obj->pushst); //删除pushst栈顶数据}}return STTop(&obj->popst); //返回的栈头数据就是第一个要出队列的数据
}bool myQueueEmpty(MyQueue* obj) {return STEmpty(&obj->pushst) && STEmpty(&obj->popst); //两个都为空才是空
}void myQueueFree(MyQueue* obj) {STDestory(&obj->pushst); //所创建的空间要清理干净,避免内存泄漏STDestory(&obj->popst);free(obj);
}
STDestory(&obj->popst);
free(obj);

}


![image-20240719221440234](https://img-blog.csdnimg.cn/img_convert/4466b02ec35f27d064c4478dbc1ba874.png)

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

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

相关文章

Windows右键新建Markdown文件类型配置 | Typora | VSCode

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 今天毛毛张分享的是如何在右键的新建菜单中添加新建MarkdownFile文件,这是毛毛张分享的关于Typora软件的相关知识的第三期 文章目录 1.前言🏝…

「MQTT over QUIC」与「MQTT over TCP」与 「TCP 」通信测试报告

一、结论 在实车5G测试中「MQTT Over QUIC」整体表现优于「TCP」,可在系统架构升级时采用MQTT Over QUIC替换原有的TCP通讯;从实现原理上基于QUIC比基于TCP在弱网、网络抖动导致频繁重连场景延迟更低。 二、测试方案 网络类型:实车5G、实车…

Easysearch、Elasticsearch、Amazon OpenSearch 快照兼容对比

启动集群 Easysearch sysctl -w vm.max_map_count262144Amazon OpenSearch Elasticsearch 由于这个docker compose没有关于kibana的配置,所以我们还是用Console添加原生的Elasticsearch集群 集群信息 快照还原的步骤 快照前的准备 插件安装 本次测试选择把索…

生产力工具|Endnote 21 Macwin版本安装

一、软件下载: (一)mac版本 Endnote 21版本下载:点击下载 Endnote 20版本下载:点击下载 Endnote X9版本下载:点击下载 (二)Endnote 20 Win版本 第一步:安装好官网软…

【技术前沿 | AI Native应用新纪元:深度解析模型微调的艺术】

在这个智能化浪潮席卷全球的今天,AI技术已经不再是遥不可及的未来概念,而是深深地融入了我们的日常生活与工作中。从智能家居到自动驾驶,从智能客服到医疗诊断,AI正以它独有的方式改变着世界。而在这一过程中,AI Nativ…

随手记:推荐vscode好用的几个小插件

原始用了挺久的插件,先上截图,以后有空再编辑: fittenCode 是一个AI小助手,相对来说很智能,你在vscode当中编写代码,甚至都可以知道你下一步知道干嘛,训练的还可以。而且还可以帮你起名字&…

2024年7月17日(nodejs,npm设置国内镜像,vue脚手架,远程管理ssh,踢出用户,scp命令,ssh免密登录)

1、安装nodejs服务 nodejs是一个运行1环境,和javajdk运行环境格式一样 [roota ~]# yum -y install nodejs.x86_64 安装完成之后,使用node -v 查看版本 [roota ~]# node -v v16.20.2 2、简易服务器的环境安装npm 安装包管理器 npm node packae manger [ro…

云计算实训09——rsync远程同步、自动化推取文件、对rsyncd服务进行加密操作、远程监控脚本

一、rsync远程同步 1.rsync基本概述 (1)sync同步 (2)async异步 (3)rsync远程同步 2.rsync的特点 可以镜像保存整个目录树和文件系统 可以保留原有权限,owner,group,时间,软硬链…

数据分析入门:用Python和Numpy探索音乐流行趋势

一、引言 音乐是文化的重要组成部分,而音乐流行趋势则反映了社会文化的变迁和人们审美的变化。通过分析音乐榜单,我们可以了解哪些歌曲或歌手正在受到大众的欢迎,甚至预测未来的流行趋势。Python作为一种强大的编程语言,结合其丰…

[数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4635 标注数量(xml文件个数):4635 标注数量(txt文件个数):4635 标注…

RabbitMQ学习实践一:MQ的安装

文章是本人在学习springboot实现消息队列功能时所经历的过程的记录,仅供参考,如有侵权请随时指出。 参考文章地址: RabbitMQ安装与入门_rabbitmq win11配置-CSDN博客 RabbitMQ入门到实战一篇文章就够了-CSDN博客 RabbitMQ系列&#xff08…

【LeetCode】十五、回溯法:括号生成 + 子集

文章目录 1、回溯法2、leetcode22:括号生成3、leetcode78:子集 1、回溯法 使用场景,如找[1,2,3]的所有子集: 2、leetcode22:括号生成 以n2为例,即两个左括号、两个右括号&#xff0c…

汇编实验5

本实验在32位Linux虚拟机中完成(点击查看安装教程) 实验内容 二进制炸弹实际是由C语言源程序生成的可执行目标代码,主程序可参考bomb.c。运行时,会按次序提示用户输入3个不同的字符串。如果输入的字符串有误,炸弹就会…

随手记:vsCode修改主题色为自定义颜色

因为工作需要长时间面对vscode,视力不好,想要把工具改成护眼色,于是就把vscode改成了自定义的护眼色 效果图: 操作步骤: 快捷键打开设置页面: 按住ctrlshiftp 选择Open setting 按回车键 打开setting页面编…

FlagEval 7月榜丨新增29个模型评测结果,智源发布评估技术报告《AI大模型能力全景扫描》

智源研究院FlagEval 7月榜单新增29个语言、多模态和文生图开源与闭源模型评测结果,包括阿里巴巴、OpenAI、快手、智谱等厂商近期发布的新模型。 本次评测发现,大语言模型,国产模型主观能力整体有所提升;视觉语言新模型的能力有所…

AI(Adobe lliustrator)教程+软件包

简介: 软件主要应用于印刷出版、海报书籍排版、专业插画、多媒体图像处理和互联网页面的制作等,也可以为线稿提供较高的精度和控制,适合生产任何小型设计到大型的复杂项目。 通常用于创建LOGO(商标或徽标),图标,插图…

【数据结构】线性结构——数组、链表、栈和队列

目录 前言 一、数组(Array) 1.1优点 1.2缺点 1.3适用场景 二、链表(Linked List) 2.1优点 2.2缺点 2.3适用场景 三、栈(Stack) 3.1优点 3.2缺点 3.3适用场景 四、队列(Queue) 4.1优点…

广义可加模型和光滑曲线拟合的R代码

🏆本文收录于《CSDN问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

ABAQUS细观混凝土周期性边界(PBC)表征体元(REV)界面层(ITZ)及砂浆塑性损伤(CDP)模拟

混凝土的细观结构决定着其宏观破坏行为,对混凝土在结构尺度上采用细观模型将导致巨大的计算量而难以实现,表征体元(‌REV)‌方法可选取一定的平均范围来描述混凝土的性质和行为,这对于理解和模拟混凝土的损伤机理至关重…

测试用例的设计方法

等价类 等价类概念:在所有测试的数据中,具有某种共同特征的数据子集 边界值 边界值分析是对程序输入或输出的边界值进行测试的一种黑盒测试方法 边界值是作为等价类的补充,其主要区别是: 边界值测试设计不是从某一个等价类中…