数组队列如何手撕?透过ArrayBlockingQueue看实现

队列
聊起队列,你一定会联想到一个与队列相似的数据结构:栈。
为了更好的理解什么是队列,我们将它和栈来比较一下:
队列的特点是:先进先出,如下图,1先进,1就先出。

图1:队列的图解
栈的特点是:先进后出,如下图,1先进,1却最后出。

图2:栈的图解
为了让你更好的区分与理解队列与栈,你只记住这个口诀:吃多了拉就是队列,吃多了吐就是栈。
哈哈哈,千万不要告诉别人这是我告诉你的....
数组实现队列,难在哪?
数组实现队列,乍一看,很贴合的一种方式去实现队列。仔细推敲一下你会发现并不简单。
为了更看清数组存在什么问题,我先new一个size为4的数组:

图3:大小为4的数组
下一步,向数组中入列4个元素,数组按照0、1、2、3的下标被填充:

图4:队列写满
继续,消费两个元素,我们按照先进先出的原则,消费掉下标为0、1的元素,如图:

图5:从队列消费2个元素
如果继续入列,你会发现:最大的下标3已经被占用,而数组依然存在空间。无法入列,造成空间浪费!
数组队列如何解决困难?
思维活跃的

数组队列如何手撕?透过ArrayBlockingQueue看实现最先出现在Python成神之路

版权声明:
作者:Zad
链接:https://www.techfm.club/p/7643.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>