关于数据结构之循环数组。
简介
- 本篇关于数据结构循环数组的介绍。
Java
中的部分对队列Queue
是基于循环数组所构建的。
循环数组
- 循环数组在实现队列
Queue
这种FIFO
结构的时候被采用,它可以提高空间的利用率。
- 用循环数组的方式实现时,为了方便判断队列时候为空或者蛮,可以采用以下方式:
- 设队列最大的容量为
max_size
,那么需要创建一个长度为max_size + 1
的数组。因为队列中的状态共有0 ~ max_size
总共max_size + 1
种状态;
- 如图所示,其中
rear
为当前队列尾部元素在数组中的下标位置,而front
为当前队列头部元素的逻辑上前一个位置的数组下标,存储队列元素的数组下标范围是0 ~ max_size
,则:
- 初始时,
front = rear = 0
;
- 队列为满的条件是:
(rear + 1) % (max_size + 1) == front
;
- 队列为空的条件是:
front == rear
;
- 当有元素入队时,先判断是否为满,不满则更新尾部位置:
rear = (rear + 1) % (max_size + 1)
,然后将新入队的元素添加到数组下标为rear
处;
- 但有元素出队时,先判断是否为空,不空则更新头部位置:
front = (front + 1) % (max_size + 1)
,数组下标为front
的元素将作为出队元素。
总结
posted @
2021-01-02 14:44
phax-ccc
阅读(
589)
评论()
编辑
收藏
举报