数组链表队列栈理解
Posted “逛丢一只鞋”
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组链表队列栈理解相关的知识,希望对你有一定的参考价值。
数组
一种线性数据结构,使用一组连续的内存空间存储一组具有相同类型的数据。
同样是线性结构的还有链表、队列等。
它在内存空间中的存储是连续的,不间断的,前后两个元素紧挨着,不存在间隙。
通过下标快速定位到数组中的元素,且时间复杂度是O(1)
链表
链表,它也是一种线程数据结构,与数组不同的是,它在内存空间中不一定是顺序存储的,为了保证链表中元素的连续性,一般使用一个指针来找到下一个元素。
链表不具有随机访问的特性,在链表中根据索引来查找元素只能从头开始(单链表),它的时间复杂度是O(n)
双向链表既可以当作队列使用,又可以当作栈来使用
队列
所谓队列,其实跟现实中的排队是一样的,其中的元素从一端进入,从另一端出去,英文叫做:First In,First Out,简写FIFO。
从这张图,也可以看出来,实现队列最简单的方式就是使用链表,把上图中的箭头倒过来即可。
入队时,将元素加入到链表尾端,出队时,将第一个元素删除并将头节点指向下一个节点即可。
栈
栈,它是与队列表现完全相反的数据结构,它的元素是先进的后出来,就像我们往一个杯子里面放东西一样,先放进去的放在最下面,只有把上面的东西拿出来后才能拿出下面压着的东西,这种行为用英文叫做:First In,Last Out,简称FILO。
栈,具有很多用处,计算机中很多处理都是通过栈这种数据结构来进行的,比如算术运算,准备两个栈,一个栈存储数字,一个栈存储符号,从头开始依次把字符压入到这两个栈中,当遇到符号优先级比栈顶元素低时,则取出栈顶符号,并从数字栈中取出两个数字进行运算,运算的结果再压回数字栈中,继续以此运行,当所有字符都放入栈之后,依次从数字栈中取出两个元素,并从符号栈中取出一个元素,进行计算,结果压回数字栈,继续以此运行,直到符号栈为空,或者数字栈只剩下一个元素为止,弹出这个数字即为最后的结果。
以上是关于数组链表队列栈理解的主要内容,如果未能解决你的问题,请参考以下文章