数据结构_栈与数据结构_队列
数据结构
数据结构有什么用?
当你用着java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类
的。好用吗?好用,这就是数据结构的用处,只不过你在不知不觉中使用了。
现实世界的存储,我们使用的工具和建模。每种数据结构有自己的优点和缺点,想想如果Google的数据用的是数
组的存储,我们还能方便地查询到所需要的数据吗﹖而算法,在这么多的数据中如何做到最快的插入,查找,删
除,也是在追求更快。
我们java是面向对象的语言,就好似自动档轿车,C语言好似手动档吉普。数据结构呢?是变速箱的工作原理。你
完全可以不知道变速箱怎样工作,就把自动档的车子从A点开到B点,而且未必就比懂得的人慢。写程序这件
事,和开车一样,经验可以起到很大作用,但如果你不知道底层是怎么工作的,就永远只能开车,既不会修车,也
不能造车。当然了,数据结构内容比较多,细细的学起来也是相对费功夫的,不可能达到一蹴而就。我们将常见的
数据结构∶堆栈、队列、数组、链表和红黑树这几种给大家介绍一下,作为数据结构的入门,了解一下它们的特与即可
常见的数据结构
数据存储的常用结构有∶栈、队列、数组链表和红黑树。我们分别来了解一下:
栈是限定仅在表尾进行插入和删除操作的线性表,栈又称为先进后出(Last In First Out)的线性表,简称LIFO结构。(栈就像一个杯子,我们只能在杯口(栈顶)向这个杯子里倒入水(进栈)或使其倒出水(出栈),而不能在杯底(栈底)进行这些操作,而且我们喝水的时候不能直接喝底下的水,只能先喝上面的水(出栈),才能去喝下面的水)
栈顶:允许插入和删除的一端称为栈顶。
栈底:不可以进行插入和删除操作。
空栈:不含任何数据元素的栈称为空栈。
栈: stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。
简单的说∶采用该结构的集合,对元素的存取有如下的特点
先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。例如,子弹压进弹夹,先压进去的子弹在下面,后压进去的子弹在上面,当开枪时,先弹出上面的子弹,然后才能单出下面的子弹。·栈的入口、出口的都是栈的顶端位置。
队列
队列:queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而
在表的另一端进行删除。
简单的说,采用该结构的集合,对元素的存取有如下的特点︰
先进先出(即,存进去的元素,要在后它前面的元素依次取出后,才能取出该元素)。例如,小火车过山洞,车头先进去,车尾后进去;车头先出来,车尾后出来。
队列的入口、出口各占一侧。例如,下图中的左侧为入口,右侧为出口。
特点
在表一端(表尾)插入,在另一端(表头)删除的线性表。
表的插入操作称为入队,表的取出操作称为出队。
队列的存储结构分为顺序存储或链式存储,顺序存储称为顺序队,链式存储称为链队。以循环顺序队列更常见。
队列分为两种:双向队列和单向队列 。
单向队列(队列):只能在一端删除数据,另一端插入数据。
双向队列(双端队列):两端都可以进行插入数据和删除数据操作。
队列队列:queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。简单的说,采用该结构的集合,对元素的存取有如下的特点︰。先进先出(即,存进去的元素,要在后它前面的元素依次取出后,才能取出该元素)。例如,小火车过山洞,车头先进去,车尾后进去;车头先出来,车尾后出来。·队列的入口、出口各占一侧。例如,下图中的左侧为入口,右侧为出口。