栈和队列简介

article/2025/9/17 5:51:24

栈和队列简介

栈和队列是两种常用的数据结构,它们的数据是按线性结构存储的,因此,栈和队列也属于线性表。

栈和队列的数据可以存储在一个顺序表里,也可以存储在一个链表里,只要满足线性存储结构就行。只对数据的线性结构有要求,对存储数据的具体结构并不做要求。

栈和队列最关键的特征是存取数据有严格的顺序。栈遵循“后进先出”(LIFO, Last In First Out)的原则,队列遵循“先进先出”(FIFO, First In First Out)的原则。

接下来就简单介绍一下栈和队列。

一、栈简介 

栈(stack),又称为堆栈,是一种数据结构,一种存储数据的容器。

作为一种线性的数据结构,栈的一端是封闭的,称为栈底,另一端是开口的,称为栈顶。

将数据存到栈中,称为入栈(或进栈、压栈),将数据从栈中取出,称为出栈(或弹栈)。

从栈中存取数据,都只能从开口的一端操作,先入栈的数据会被后入栈的数据“压”住,只有将后入栈的数据取出后,才取得到先入栈的数据,所以,栈的数据是“后进先出”的。

栈的常见应用如:大部分软件都有的“回退”功能Ctrl+Z,浏览器的“后退”功能等。

栈的数据存储结构可以使用顺序表,也可以使用链表。使用顺序表存储数据的栈称为顺序栈,使用链表存储数据的栈称为链栈。

根据顺序表和链表的区别,顺序表物理有序,链表逻辑有序,顺序栈和链栈的区别为,数据在实际物理空间上存放的相对位置不同,顺序栈的数据按物理有序存储,链栈的数据按逻辑有序存储。

二、队列简介

队列(queue),是另一种有存取顺序要求的数据结构。

队列的两端都是打开的,两端都是“单行”的,一端只进不出,称为队尾,另一端只出不进,称为队头。

将数据从队尾存到队列中,称为入队,将数据从队列中取出,称为出队。

队列的一端只能存入数据,另一端只能取出数据,从队列中取数据时,先入队的数据“挡”住了后入队的数据,只有将先入队的数据取出来,才取得到后入队的数据,所以,队列的数据是“先进先出”的。

队列的常见应用如:春运抢票功能,网购预约功能等。

与栈相同,队列的数据存储结构也可以使用顺序表或者链表。使用顺序表存储数据的队列称为顺序队列,使用链表存储数据的队列称为链队列。

顺序队列和链队列的区别为,数据在实际物理空间上存放的相对位置不同,顺序队列的数据按物理有序存储,链队列的数据按逻辑有序存储。

三、双端队列简介

双端队列(deque,全名double-ended queue),是一种特殊的线性数据结构。

与队列不同,双端队列的两端都可以入队和出队。也就是说,双端队列没有严格意义上的“队头”和“队尾”,只是为了描述方便,分别称为“前端”和“后端”,两端能进行的操作一样,都可以插入和删除数据。

双端队列同时具有栈和队列的性质。单独从其中一端存取数据时,数据是“后进先出”的,具有栈的性质。从其中一端存数据再从另一端取出,数据是“先进先出”的,具有队列的性质。

双端队列就是一种可以(也只能)从两端插入和删除数据的线性数据结构,使用起来比栈和队列更加灵活。

 

 


http://chatgpt.dhexx.cn/article/pHvWW4yq.shtml

相关文章

栈和队列基本操作

栈和队列 一、栈栈是什么栈的实现栈的基本操作栈类型的定义初始化栈检查栈是否为满入栈出栈获取栈顶元素检测栈是否为空测试函数 完整代码Stack.hStack.cmain.c 二、队列队列是什么队列的实现队列类型的定义申请一个节点初始化队列队尾入队列队头出队列获取队列头部元素获取队列…

C#队列和栈的使用

一、队列 队列是其元素以先进先出&#xff08;Firstin,Firstout,FIFO&#xff09;的方式来处理的集合。先放入队列中的元素会先读取。队列使用System.Collections.Generic命名空间中的泛型类Queue<T>实现。 队列的成员 Count&#xff1a;Count属性返回队列中元素个数。…

栈和队列经典面试题

目录 1、括号匹配问题 2、用队列实现栈 3、用栈实现队列 4、设计循环队列 1、括号匹配问题 链接直达&#xff1a; 有效的括号 题目&#xff1a; 思路&#xff1a; 做题前&#xff0c;得先明确解题方案是啥&#xff0c;此题用栈的思想去解决是较为方便的&#xff0c;栈明确指…

栈stack和队列

栈和队列 一 栈和队列二 栈三.队列 一 栈和队列 栈和队列是两种重要的线性结构。从数据结构来看&#xff0c;栈和队列也是线性表&#xff0c;其特殊性在于栈和队列的基本操作是线性表操作的子集&#xff08;也具有顺序结构和链式结构&#xff09;&#xff0c;它们是操作受限的…

链表,队列和栈的区别

链表&#xff0c;队列和栈都是数据结构的一种。Sartaj Sahni 在他的《数据结构、算法与应用》一书中称&#xff1a;“数据结构是数据对象&#xff0c;以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象&#x…

栈与队列的定义与区别

1、栈 首先&#xff0c;普通的线性表实现是有两个端口可以访问的&#xff0c;但是如果作为栈就要封闭一端&#xff0c;只能访问另一端。这当然不是自讨苦吃&#xff0c;栈是一种抽象数据结构&#xff0c;是对现实世界对象的模拟。比如&#xff0c;自助餐厅中的一叠盘子&#x…

java 队列和栈的区别

栈和队列的区别 &#xff08;1&#xff09;数据插入删除 栈是一种特殊的线性表&#xff0c;他只能在一段进行插入和删除操作&#xff0c;就好像是一个井一样。进行数据插入和删除就类似于井口&#xff0c;称为栈定。而井也是有底部的&#xff0c;栈无法进行插入删除操作的这一…

监督学习和无监督学习的区别(机器学习)

机器学习主要分为两类 监督学习无监督学习 两者的区别主要是是否需要人工参与数据结果的标注 监督学习&#xff1a;教计算机如何去完成预测任务&#xff08;有反馈&#xff09;&#xff0c;预先给一定数据量的输入和对应的结果即训练集&#xff0c;建模拟合&#xff0c;最后让…

简单说下有监督学习和无监督学习的区别

简单说下有监督学习和无监督学习的区别 解析&#xff1a; 有监督学习&#xff1a;对具有标记的训练样本进行学习&#xff0c;以尽可能对训练样本集外的数据进行分类预测。&#xff08;LR,SVM,BP,RF,GBDT&#xff09; 无监督学习&#xff1a;对未标记的样本进行训练学习&#xf…

一个简单的例子来理解监督学习和非监督学习及其区别

首先&#xff0c;必须理解两个基本概念&#xff1a;特征值和目标值&#xff0c;先看图例 1、特征值&#xff1a; 特征值是指数据的特征&#xff0c;对于每个样本&#xff0c;通常具有一些 "属性"&#xff08;Attribute&#xff09;或者说 ”特征“&#xff08;Featu…

监督学习、无监督学习和半监督学习区别

1、概念 1.1监督学习&#xff08;数据集有输入和输出数据&#xff09;&#xff1a;通过已有的一部分输入数据与输出数据之间的相应关系。生成一个函数&#xff0c;将输入映射到合适的输出&#xff0c;比如分类。 1.2无监督学习&#xff08;数据集中只有输入&#xff09;&…

监督、自监督、半监督、无监督学习的区别

目录 一、简易版区别 二、详细版区别 一、简易版区别 A Survey on Semi-, Self-and Unsupervised Learning for Image Classification 文中的解释&#xff1a; 监督学习&#xff08;a&#xff09;&#xff1a;给出全部样本红蓝两类的标签 半监督学习&#xff08;b&#xf…

有监督学习与无监督学习

机器学习的常用方法&#xff0c;主要分为有监督学习(supervised learning)和无监督学习(unsupervised learning)。简单的归纳就是&#xff0c;是否有监督&#xff08;supervised&#xff09;&#xff0c;就看输入数据是否有标签&#xff08;label&#xff09;。输入数据有标签&…

有监督和无监督

来自有监督vs.无监督&#xff0c;傻傻分不清楚&#xff1f; - 搜狐网 网上对于有监督和无监督差异性的文章非常多&#xff0c;本文将重点从应用的角度来阐述如何选择有监督和无监督。 对比一&#xff1a;有标签 vs. 无标签 有监督又被称为“有老师的学习”&#xff0c;无监督被…

机器学习:有监督和无监督之间有什么区别

机器学习是人工智能的一个子集&#xff0c;它通过示例和经验教会计算机执行任务&#xff0c;是研究和开发的热门领域。我们每天使用的许多应用程序都使用机器学习算法&#xff0c;包括AI助手&#xff0c;Web搜索和机器翻译。 您的社交媒体新闻提要由机器学习算法提供支持。您、…

有监督学习与无监督学习的几大区别

当下无监督作为一种热门的机器学习技术&#xff0c;网上有不少关于无监督与有监督差异讨论的文章。DataVisor作为率先将无监督技术运用在反欺诈行业的娇娇领先者&#xff0c;我们在本文中&#xff0c;将深入浅出的讲解无监督机器学习技术与有监督技术在不同方面的区别&#xff…

监督学习和无监督学习区别

前言 机器学习分为&#xff1a;监督学习&#xff0c;无监督学习&#xff0c;半监督学习&#xff08;也可以用hinton所说的强化学习&#xff09;等。 在这里&#xff0c;主要理解一下监督学习和无监督学习。 监督学习&#xff08;supervised learning&#xff09; 从给定的训…

关于使用burpsuite时,“安全连接失败,使用了无效的证书”问题【已解决】

安装好burpsuite&#xff0c;配置好网络连接代理后&#xff0c;导入了证书&#xff0c;访问某一网站还是会出现如下现象&#xff1a; 解决方案&#xff1a; 打开浏览器设置-高级-证书-证书机构&#xff0c;删除刚才导入的证书。 再次访问http:\burp下载证书。 再次在设置-高级…

火狐浏览器出现“建立安全连接失败”PR_CONNECT_RESET_ERROR解决方法

访问一个网站出现这样的问题&#xff0c;可能是因为自己设置一些东西导致DNS解析出错。 我找了网上几个比较主流的方法都不能解决&#xff0c;最后就是一招刷新DNS解决了。&#xff08;哭笑不得&#xff09; 解决方法&#xff1a; 按“win R”键&#xff0c;启动运行窗口&a…