所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

解决队列的假溢出的方法?

发布时间:2020-04-15 16:14:38

资讯分类:队列  溢出  方法  解决  队列  指针  作业
解决队列的假溢出的方法?

1、在计算机程序设计中经常使用队列,一个典型的例子就是操作系统产生的作业队列,如果操作系统使用的不是优先级调度,那么作业按照进入系统的顺序进行处理。显然,随着作业的进入和离开系统,队列逐渐右移。这意味着队尾最终等于max_queque_size-1(最大队列长度-1),说明队列已满。这就是“假溢出”现象。

2、此时,需要重新计算对头(front)和队尾(rear)指针,使其处在正确的位置上,而且移动的时间开销很大,特别是当队列中包含大量元素时。为了得到一种有效的存储表示,引入了循环队列,因此,循环队列克服了“假溢出”的现象。

3、一般约定,循环队列存储的容量为max_queue_size-1,这是为了避免front和rear指向同一处,从而无法判断队满还是队空,而计算指针可使用%max_queue_size运算,避免指针越来越大。这样,在入队前,让尾指针+1,若等于头指针,则队满。出队时,若头指针等于尾指针,则队空。

4、可以另设一个变量,每出队一个元素对其-1,入队一个元素对其+1,这样也可以判断队满和队空。

留言与评论(共有 0 条评论)
   
验证码:
Top