留言与评论(共有 0 条评论) |
发布时间: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 条评论) |
全站搜索