数组、链表、队列、栈理解

数组

一种线性数据结构,使用一组连续的内存空间存储一组具有相同类型的数据。

同样是线性结构的还有链表、队列等。

它在内存空间中的存储是连续的,不间断的,前后两个元素紧挨着,不存在间隙。

通过下标快速定位到数组中的元素,且时间复杂度是O(1)

链表

链表,它也是一种线程数据结构,与数组不同的是,它在内存空间中不一定是顺序存储的,为了保证链表中元素的连续性,一般使用一个指针来找到下一个元素。

链表不具有随机访问的特性,在链表中根据索引来查找元素只能从头开始(单链表),它的时间复杂度是O(n)
在这里插入图片描述
双向链表既可以当作队列使用,又可以当作栈来使用

队列

所谓队列,其实跟现实中的排队是一样的,其中的元素从一端进入,从另一端出去,英文叫做:First In,First Out,简写FIFO。
在这里插入图片描述
从这张图,也可以看出来,实现队列最简单的方式就是使用链表,把上图中的箭头倒过来即可。
在这里插入图片描述
入队时,将元素加入到链表尾端,出队时,将第一个元素删除并将头节点指向下一个节点即可。

栈,它是与队列表现完全相反的数据结构,它的元素是先进的后出来,就像我们往一个杯子里面放东西一样,先放进去的放在最下面,只有把上面的东西拿出来后才能拿出下面压着的东西,这种行为用英文叫做:First In,Last Out,简称FILO。

栈,具有很多用处,计算机中很多处理都是通过栈这种数据结构来进行的,比如算术运算,准备两个栈,一个栈存储数字,一个栈存储符号,从头开始依次把字符压入到这两个栈中,当遇到符号优先级比栈顶元素低时,则取出栈顶符号,并从数字栈中取出两个数字进行运算,运算的结果再压回数字栈中,继续以此运行,当所有字符都放入栈之后,依次从数字栈中取出两个元素,并从符号栈中取出一个元素,进行计算,结果压回数字栈,继续以此运行,直到符号栈为空,或者数字栈只剩下一个元素为止,弹出这个数字即为最后的结果。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值