首页 > 编程语言 > 详细

一、线性表基础-线程池与任务队列

时间:2021-06-09 09:18:55      阅读:24      评论:0      收藏:0      [点我收藏+]

一、基础知识

1、队列有一片连续的存储区,可以存放数组或者链表。

2、队列有head头指针,tail尾指针(通常指向最后一个元素的下一位,因为大多数编程语言中,描述区间范围通常都是左闭右开”[ )“,这样的好处是,tail - head就是元素数量 。

3、普通队列,只支持头部出队与尾部入队操作(这是逻辑层面上的操作,移动对应的head、tail指针),不是删除存储区中的空间。

      head                                                                    tail

1 2 3 4        

上面队列中,head指向头元素1,对应的下标是0 ;tail指向尾元素4的下一位,对应的下标是4;当tail - head等于4,刚好就是元素数量

                                           head                                                                                          tail

1 2 3 4  5  6  

上面队列,进行 两次出队后,头指针head指向元素3,这只是逻辑上head移动,在存储区中还是存在元素1和2,但无法访问前面的元素。同时添加5、6、7、8四个元素,尾指针tail往后移动4次,它已经无法添加新元素9了,因为tail指向存储区的末尾。队列空间有8个,但队列实际存储可用只有6个,前面2个空间没用上,这是真的溢出吗?明显这只是tail尾指针逻辑上移到最后一位,才判断时误以为满了,这就是所谓的假溢出。

4、为了解决假溢出,提出一个新队列--循环队列。就是tail尾指针指向最后一位时,重新将tail指针指向队列第一位,只是为了有效利用队列空间。

                            tail          head                                                                                      

9 2 3 4 5 6 7 8

一、线性表基础-线程池与任务队列

原文:https://www.cnblogs.com/xuanxing1988/p/14864939.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!