news 2026/4/5 13:19:28

栈和队列的实现以即相应QJ题的总结

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
栈和队列的实现以即相应QJ题的总结

1.首先对顺序表以及链表的区别总结

顺序表链表
物理空间连续物理空间不连续
支持使用下标随机访问不支持随机访问
任意位置的插入删除效率低O(N)任意位置的插入删除效率高O(1)
扩容方法容易造成浪费按需扩容
缓存利用率高缓存利用率低

对缓存利用率的理解:

CPU处理内存中的数据有两种方式

(1)处理寄存器从内存中获取的数据 (一般是几个字节大小)

(2)内存到CPU过程中还可以通过缓存路线运输

内存的数据通过三层缓存加工,最后在第三层被CPU处理(常用于处理大数据)

从内存到缓存的数据运输是从要使用的数据开始之后的一段数据(不管是否要使用)

如果后面的数据有用就使用,不然就从新的数据段开始运输.

因此,顺序表由于空间上连续,缓存段中的有效数据多,因此缓存利用率高.

链表由于空间上不连续,缓存段中的有效数据少,因此缓存利用率低.

正篇开始

1.queue的实现

queue遵循尾进头出,因此采用链表的方式实现

为保证时间复杂度的最小,我们需要对链表的头和尾进行保存同时对大小进行管理,因此考虑使用struct 进行统一管理.

结点的创建

对象的设计

所有成员的申明

成员的实现

栈的实现

遵序头进头出,露头就秒

节点申明

成员申明

top如果想要指向最后一个元素,top = -1 的初始化才对.

但此处我们更想要top 有size的效果,因此要top = 0,但此时top就指向最后一个元素的下一位了.

下面是三道题,使用的队列和栈与上面的完全相同

1.使用两个队列实现栈

解法:先将数全部push 到一个队列中,然后将size - 1 个放进另一个队列中,剩下的一个就是stack的第一个.

代码

针对于pop和top,可以采用假设法

不断的试错后,我明白了,如果只是对指针内部成员进行修改,一级指针即可,二级指针一般出现在需要获取一级指针地址或要修改一级指针指向的时候.

用栈生成队列

解法:一个栈作为push,一个作为pop.pop完了再push.

最后一题,循环队列

解法:设计k+1个位置,使用%操作来进行循环

对于循环的再补充啊

a % N ,N的大小取决于循环圈的大小,N与循环圈等大,为了最后一位N-1到N位越界时%N为0到第一位.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 12:13:06

百考通AI任务书功能:智能生成贴合你专业的毕业设计任务书,规范、高效、一次成型

毕业设计任务书是高校人才培养中承上启下的关键文档——它不仅是选题的正式确认,更是后续研究、开发与论文撰写的“施工蓝图”。然而,许多学生在撰写时常常因不熟悉专业规范、技术表达不清或找不到权威模板而陷入困境:内容空洞、结构混乱、术…

作者头像 李华
网站建设 2026/3/25 22:46:02

不得了!口碑超棒的天玑AIGEO优化系统来袭!

天玑AIGEO优化系统:引领本地精准营销新时代在数字化营销的浪潮中,企业面临着诸多挑战,天玑AIGEO优化系统的出现为解决这些难题带来了新的希望。武汉天玑AI互联网中心作为专注AI营销技术研发与全链路服务的创新型企业,其推出的天玑…

作者头像 李华
网站建设 2026/4/3 3:27:52

YOLOv5s/yolov7/yolov8+pyqt flask车流量检测(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

YOLOv5s/yolov7/yolov8pyqt flask车流量检测(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 统计系统 车辆检测:实时检测不同类型的车辆,包括:汽车,卡车,公共汽车,摩托车。2车流…

作者头像 李华
网站建设 2026/4/2 6:44:19

企业出海哪家靠谱?深度解析Dynabridge的品牌全球化实战之道

在2026年的全球化浪潮下,中国企业正面临从“产品出海”向“品牌出海”转型的关键节点。面对国内产能过剩、亚马逊平台费用攀升(甚至占收入50%以上)等挑战 ,众多CEO和市场负责人都在搜索引擎中寻找答案:企业出海咨询公司…

作者头像 李华