堆栈和队列

Anonim

堆栈和队列都是由基于某些现实等价物以数据结构中的特定顺序组织的对象的顺序集合来定义的。两者都是用于有效存储和检索数据元素的线性数据结构,但工作原理除外。堆栈是一个有序的元素列表,其中所有插入和删除都在同一端进行,而一个队列恰好与两端打开的堆栈相反,意味着一端用于插入数据而另一端用于删除数据。两者的主要区别在于其工作机制。

什么是堆栈?

堆栈是一种线性数据结构,用于以特定方式组织数据,以便可以有效地使用它。机器需要指导以命令的形式完成简单和复杂的任务。类似地,数据可以以许多不同的方式构造,并且最有效的数据结构之一是堆栈。它是一个抽象的数据结构,类似于物理堆栈,其中对象按特定顺序组织,特别是基于后进先出(LIFO)机制,这意味着首先要访问最后添加的项目,反之亦然。堆栈数据结构的最常见应用是回溯或深度优先搜索算法。

什么是队列?

队列也是一种线性数据结构,有点类似于堆栈数据结构,除了它在两端都是开放的。它是一个类似于人的队列的顺序的对象集合。与堆栈不同,它基于先进先出(FIFO)原则,这意味着可以先访问最早添加的项目,反之亦然。在队列中,一端用于插入项目,另一端用于删除项目。就像一行人一样,新实体放在后面,已经服务的实体从前面移除。队列中允许两个操作:入队和出队。入队是指在后方添加物品,出队是指从前面移除物品。

堆栈和队列之间的区别

堆栈和队列的含义

堆栈是一种基本数据结构,是一种抽象数据类型,由类似物理堆栈的线性结构表示,其中对象可以随时添加,但可以删除最后添加的对象。简单来说,堆栈数据结构中对象的插入和删除发生在堆栈顶部的一端。队列有点类似于堆栈,除了它在两端打开 - 一端插入对象而另一端移除对象意味着可以首先访问先存储的对象。

堆栈和队列中的工作原理

堆栈和队列都是数据结构中的非原始抽象数据类型,用作对象的集合,其中实体以特定顺序存储。堆栈是对象的容器,其中基于后进先出(LIFO)工作原理来存储和移除实体,这意味着可以一次存储和检索对象。另一方面,队列是对象的集合,其中根据先进先出(FIFO)原理存储和移除实体。

堆栈和队列的结构

名称堆栈指的是一种结构的类比,其中物品被放置在彼此之上,就像一堆饼干一样堆叠。一端用于从堆栈中放置和移除对象,使得从顶部轻松地拾取对象,同时使得难以同时访问最后一个从顶部开始逐个移除多个项目的对象。队列与堆栈相反,意味着新对象放置在后面并从正面移除,就像书本一样。

操作

可以在堆栈上执行两个基本操作:push,它基本上将一个项目添加到堆栈中,如果堆栈已满,那么它是一个溢出条件,并且pop,它从堆栈中删除了最近的项目和一个空堆栈,指的是下溢情况。还有一个与堆栈相关的peek操作,允许您在不修改堆栈的情况下访问顶部的项目。两个基本原则与队列相关联:enqueue表示向后方添加对象,而出队表示从前方删除对象。

堆栈和队列的应用

堆栈数据结构的最主要应用之一是深度优先搜索算法,该算法基于主要用于搜索图形或树数据结构的回溯的概念。它还可以用于编译器/操作系统来处理函数调用或实现递归函数。队列数据结构的最常见应用是CPU调度或磁盘调度或操作研究。队列数据结构的真实例子是人们自己的队列,其中首先在线路中站在第一线的人。

堆栈与队列:比较图表

堆栈与队列的总结

堆栈和队列都是非原始抽象数据结构,定义为在计算机中以特定顺序组织的对象集合,但具有不同的工作原理。虽然两者都与数据的组织和存储有关,但它们的表现却截然不同。Stack是基于LIFO原理的基本数据结构,也称为后进先出,意味着最后添加的项目首先被访问,或者FILO意味着最后访问的第一个项目。相反,队列基于FIFI(先进先出)原则,这意味着首先要访问最早的项目。