#中队列的数据结构_数据结构与算法拓展(一)

栈与队列

  申明:由于篇幅限制,文章可能有些简略,如果大家想要详细了解,请一定要百度一下,并阅读例题,完成习题

绪言:计算机科学在过去的数十年内发展飞速,各种新颖的技术纷至沓来:5G,VR,AI;大数据,可视化,区块链;品种多样,令人目不暇接。可是在这繁多的技术与科技背后,却隐藏这这样一个亘古不变的公式。

算法  +  数据结构  =  大千世界

    算法的定义:解题方案的准确而完整的描述,是一系列解决问题的清晰指令。

    数据结构的定义:计算机存储、组织数据的方式。

    今天,让我们从最基础的数据结构——栈(Stack)和队列(Queue)开始,透过大千世界的幻影探索它的真实。

     栈和队列可以说是每一本的数据结构书都会加以介绍的最基本的数据结构,也是为数不多的线性数据结构。它们是所有数据结构初学者所必须掌握的知识。

     栈在百度百科上的定义:又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。如图

38a5b64fc40971cd6070f4a58ab54f4d.png

    队列在百度百科上的定义:和栈一样,队列是一种操作受限制的线性表,不同之处在于它只允许在表头进行删除操作,在表尾进行插入操作。如图。

0cdc120c660b14aed4786568dc1746e2.png

    由于都是受限制的线性表,所以在定义这两种数据结构的时候都只需要一个线性表A ,但在这两种数据由于操作不同,我们也需要两组不同的指针加以甄别。如图所示:

204c8558e1322959d9dbfaac6e7cf179.png

    栈和队列的操作很简单,栈只有在表尾进行插入和删除操作,也就是入栈和出栈;而队列也仅有在表尾进行插入和表头进行删除,也就是入队和出队操作。如图:

0775c338a15bae772ee791dc34242573.png

    上诉代码实现了一个基本的栈和队列的功能,有兴趣的同学可以把这段代码copy后运行,自己编制几组数据进行检验,如果能够用草稿纸模拟一下过程是再好不过。

    只不过,唯一有一些可惜的是上述代码中队列的实现似乎有一些浪费额外空间,这是由于队列进行出队操作后,队首指针之前的数据没有了再使用的可能性,却依然占用空间导致,这种队列称为顺序队列。

    解决方法有两种,一种是使用链表来实现队列,在队首元素出队后,直接释放指针空间,这种队列称为链式队列;另一种方法就是使用循环队列。如图:

ab4b16a3e399dc758e542629fd0789b9.png

    循环队列的核心是:在一定宽度范围内,保证每一个队内的元素反复使用宽度内的空间。实现的方式就是模运算一旦队尾或者队首超过宽度限制,通过取余运算使之返回限定的宽度的头部。

242b4cf1b3d58d1fb8c606c27e814df9.png

    这样,通过模运算,使得整个序列的宽度限制在lim内。值的一提的是,这时已经不能用p>q来表示队列已空,因为队列循环的情况下p>q是合法的。

    通过以上的描述,大家可能对栈和队列的基本知识有一定的了解,现在给出两道例题,尝试用这两种数据结构去解决一些实际问题。

b587131bb2aa593e651b37a7ce216d28.png

f30fcdd95c87c30cde4d058ca7004da8.png

f46fdb6dc85c73475daddc85bed2514c.png

    上述两道题详细的向我们描述了应该如何用栈和队列这种数据结构去解题。请详细揣摩,如果能够代码实现,一定会有很大的收获。

    从此,通过栈和队列中两种里程碑式的数据结构,我们进入了它的大门,而这也是我们学习它的开始。

    下面给出一些练习题,如果有兴趣,大家可以去尝试一二。

T1:https://www.luogu.com.cn/problem/P1044  栈的基础知识理解。

T2:https://www.luogu.com.cn/problem/UVA12265 类似例题1

T3:https://www.luogu.com.cn/problem/P1823 二分+栈

T4:https://www.luogu.com.cn/problem/P1886 例题2模板题

谢谢阅读。

写留言

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

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

相关文章

display属性_Numpy知识点(1)讲解实操安装/属性/数组创建/运算

# 1、安装包# pip install numpy #原生python安装# conda install numpy #Anaconda的安装# 使用Numpyimport numpy as np a np.arange(15) #生成0-14的一维数组display(a)display( )和print( )都是打印,在大多数编程软件上都使用print,jupyter notebook中我们可以使用d…

springboot怎么设置多个路径全部跳转首页_SpringBoot(四)—Web开发(二)

这篇文章准备来记录一下一个restful风格小项目的流程,上篇文章为它做了一个基础,如果有什么错误希望大家能够指出。目录首页国际化登录拦截器CRUD一、首页在访问localhost:8080/的时候,默认访问首页在自己配置的SpringMVC的配置类中Configura…

计算机英语六级,英语六级作文范文:计算机

英语六级考试时间越来越近了,所以在备考的时候就更要掌握技巧,勤加练习。在备考英语六级写作时,学习一篇好的范文,会给复习带来事半功倍的效果。Using a computer every day can have more negative than positive effects on you…

python软件_Python自制照片美颜软件~

下午被一个骗子恶心到了,本来听公开课听得好好的,搞得心情极差,于是就中断了网课,听听音乐,写一下文章吧!前期准备①Python编译环境以及Python代码编辑器Pycharm的安装:请在【微信公众后台】找到…

数据集怎么导出_PCA算法 | 数据集特征数量太多怎么办?用这个算法对它降维打击...

今天是机器学习专题的第27文章,我们一起来聊聊数据处理领域的降维(dimensionality reduction)算法。我们都知道,图片格式当中有一种叫做svg,这种格式的图片无论我们将它放大多少倍,也不会失真更不会出现边缘模糊的情况。原因也很简…

常用命令_GIT常用命令大全

Git 是一个很强大的分布式版本控制系统。它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势。克隆远程文件:git clone https://gitee.com/abcd/codefile.git projectgit checkout -b dev(本地分支名称) origin/dev(远程分支名称…

nvidia显示设置不可用_Nvidia显示设置不可用,您当前未使用连接到NVIDIA GPU的显示器的解决方法...

相信不少用户遇到这样一个问题,就是新购买的台式机电脑,配置达标的情况下,玩游戏出现卡顿不流畅的现象,准备在NVIDIA控制面板查看是否设置的问题,在打开NVIDIA控制面板的时候,提示了“Nvidia显示设置不可用…

oracle tns 代理配置_Toad for oracle安装配置与使用

一.toad安装与配置注意:toad的使用本机电脑必须安装完整版oracle客户端,不能是精简版的.1.1完整版oracle客户端的安装.1.解压文件,安装oracle客户端打开安装包,找到setup.ext,开始安装。提示下图弹窗,可根据此网址内容进行更改(https://blog.…

吴枫 python小课账号_无门槛速学编程——Python小短课,自上而下分而治之

【Python小短课 11】自上而下,分而治之 做任何事都需计划,编程也是。 譬如写文章要列大纲、作画要想布局,编程也需先谋全局,而后思虑细节。 就以上回说到的“找宝藏”这个程序举例,最顶层的需求自然就是“找宝藏”&…

计算机本地磁盘D无法扩展,计算机上的本地磁盘D突然无法打开,表明它需要格式化...

接受使用数据恢复软件将重要数据保存到其他磁盘FindDate特定操作: 运行软件----“打开”后,将显示要还原的驱动器. C \ D \ E \ F选择您要还原的一个,它将开始. 扫描后,再次保存扫描的文件. 哈哈,希望对您有所帮助.最后&#xff0…

caffe运行不停止_caffe(gpu)安装过程及问题解决

2019.12.05 caffe(gpu)安装参考网址:教程1:weiliu89/caffe​github.com教程2:https://blog.csdn.net/yggaoeecs/article/details/79163789​blog.csdn.net环境:Ubuntu16.04cuda10.0安装过程:git clone https://github.…

2021年考计算机考研三战,2021考研的小伙伴有3条忠告一定要记得,这些都是历年实战经验...

2021考研的小伙伴有3条忠告一定要记得,这些都是历年实战经验,考研一定要记得避开三个大坑。1,分数线低的学校就一定容易考。有一些学校分数线看着很低但实际上难度不低,比如首都师范大学 ,很多专业就是国家线录取甚至招…

c++ 返回string_JVM系列之:String.intern和stringTable

简介StringTable是什么?它和String.intern有什么关系呢?在字符串对象的创建过程中,StringTable有起到了什么作用呢?一切的答案都在本文中,快来看看吧。intern简介intern是String类中的一个native方法,所以它…

华为 虚拟键盘_华为mate30 pro虚拟机械键盘特有体验,虽是虚拟,但却感受逼真...

华为Mate30 pro已于26日在国内正式发布了。此外,根据了解华为Mate30系列现在已经突破了5亿的销售额。看来,华为的这个下半年旗舰手机非常受欢迎啊。华为Mate30系列现在在国内已经发布了,其整体感官看上去与海外的没有多大的区别。其实&#x…

计算机有什么著名基金经理排名,百万年薪的基金经理,都是什么专业出身?!...

有人会说了“小哔君你四不四撒!基金经理肯定是金融专业出身的咯?不然嘞?”但事实的真相是许多基金经理都并非科班出身这要从基金经理的晋升机制说起了!如下图基金经理都是从研究员做起的!那么问题来了,如何…

遍历children_589. N叉树的前序遍历

589. N叉树的前序遍历给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :返回其前序遍历: [1,3,5,6,2,4]。说明: 递归法很简单,你可以使用迭代法完成此题吗?题解:既然是树的遍历,那么一共就是两种思路&a…

计算机未显示移动硬盘,电脑不显示移动硬盘怎么办_移动硬盘已连接不显示解决教程...

最近有很多小伙伴咨询小编,电脑不显示移动硬盘怎么办,怎么设置才能恢复呢?其实操作内容很简单,尝试删除你的USB3.0可扩展主机控制器,再扫描硬件改动,今天就由小编来告诉你,移动硬盘已连接不显示的解决方法。…

八个角最多可以把平面分成多少部分?_一个空间最多能被分成几块?

相信大家在小学奥数中都遇到这样一个问题:4条直线最多能将平面分成几部分?这个问题并不能难倒我们,但是如果将问题改为:4个平面最多能将空间分为几部分?这下子我们可能就要放弃了。为了解决这个问题,今天我…

破坏计算机信息系统功能罪,破坏计算机信息系统罪

破坏计算机信息系统罪2010年05月05日19:42法律咨询 我要评论一、概念&nbsp&nbsp&nbsp&nbsp破坏计算机信息系统罪(刑法第286条),是指违反国家规定,对计算机信息系统功能或计算机信息系统中存储、处理或者传输的数据和应用程序进行破坏…

东京战纪服务器维护中,东京战纪7月21维护公告 当前测试进度介绍

东京战纪当前的测试进度已经有了很大的进步,接下来小编就跟大家一起看看测试期间对玩家给大家的报告吧。亲爱的喰种和CCG搜查官们7月19日中午12:00,我们怀着紧张又忐忑的心情开启了《东京战纪》官网限量删档技术测试。大家对《东京喰种》IP的热爱和对《东…