数据结构队列和堆栈(必须学好的数据结构知识)

在数据结构中,队列与栈的产生主要是为了满足某些特殊的编程运算,数据结构最大的一个特点就是为算法提供基础,使用不用的数据结构甚至能直接影响算法的好坏,多数情况下,数据结构与算法是一种相辅相成的关系。

栈:和我们上节说到的一样,栈也是一种线性的存储结构。但是它限制了只能在线性表的尾部进行数据插入和删除操作,根据一张图示来进行形象说明。

数据结构队列和堆栈(必须学好的数据结构知识)(1)

栈的数据存放原则遵循 先进后出 的数据存放原则,因为它的数据出口只有一个,那就是栈顶,也就是上面所说的栈尾。如果一个栈里面没有数据元素的存放又被称之为 空栈,这种数据结构比较常用的场景就是程序计算中关于后缀表达式的计算。

队列:同样队列也是线性存储结构,和栈的数据处理方式正好是相反的,它是在线性表的一端进行数据插入,另一端则进行删除操作,根据图示来进行说明。

数据结构队列和堆栈(必须学好的数据结构知识)(2)

队列的数据存放原则遵循 先进先出 的存放原则,因为它拥有两个出口,一个出口专门负责数据进入、另一个出口专门负责数据出去,数据进入对应的就是数据插入、数据出去对应的就是数据删除。

在 Java 语言中,同样有关于队列与栈的实例对象的实现。队列对应的接口对象是 Queue、栈对应的则是 Stack,下面来看一下其中的部分源码分析。

数据结构队列和堆栈(必须学好的数据结构知识)(3)

Stack()有自己的实例化对象,Queue()只定义了接口,它是在其他表的对象中实现的,我们选择使用 LinkedList<Object> 对 Queue()的实例化源码来说明。

数据结构队列和堆栈(必须学好的数据结构知识)(4)

根据源码分析,我们寻找到 LinkedList 实例实现了队列接口,那么我们来看一下它的入队方法是怎样的。

数据结构队列和堆栈(必须学好的数据结构知识)(5)

注意:线性表与链表通常也是一起使用的,所以说数据结构外部使用线性表、内部再使用链表是非常的常见的数据结构的组装形式。

文章来源于:微信公众号【老王说编程】

另外作为一名编程学习者,如果你想更好的提升你的编程能力,好好学习C/C 编程知识以及数据结构,以后努力成为高薪算法/软件开发工程师的话!

编程学习书籍:

数据结构队列和堆栈(必须学好的数据结构知识)(6)

编程学习视频:

数据结构队列和堆栈(必须学好的数据结构知识)(7)

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

数据结构队列和堆栈(必须学好的数据结构知识)(8)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页