数组模拟队列
2021-06-26 13:45:51 0 举报
使用数组模拟队列,包含循环队列
作者其他创作
大纲/内容
.
rear=0
queue
2
1
循环队列,初始化方式为 0 循环队列,重要约定:判断队列满时,将队列容量空出一个作为约定
20
rear=1
10
rear=2
MaxSize-1
rear=maxsize-1
0
30
front=2
队列满状态(full): 根据循环队列的提前约定,队列容量空出一个来判断队列满 因此,当队列的下一个元素的索引为队首时,队列满 即 (rear + 1) % maxsize == front 时队列满
普通队列,初始化方式为 0
rear=maxsize
数组模拟队列
普通队列,初始化方式为 -1
入队状态(add): rear 队列未满情况下,数据入队,rear后移 从图示可知,rear指向对尾的后一个位置,不包含队 尾的元素
front=4
初始化状态(init): rear 指向队尾位置,包含队尾元素 front 指向队首的前一个位置,不包含队首元素
...
front=-1
front=0
入队状态(add): rear 队列未满情况下,数据入队,rear后移 因循环队列特性,rear = maxsize 后,前队列有数据 出队之后仍可进行插入操作 当入队至数组队列最大值时: rear = maxsize 当要再次插入时,仍要加一,并 指向对尾的后一个位置,即为 1; 因此在折返插入时: 向 arr[rear]位置插入元素,实现再次插入的折返行为 而后,rear 后移一位,rear = (rear+1) % maxsize
初始化状态(init): rear 指向队尾的后一个位置,不包含队尾元素 front 指向队首位置,即队首元素(队列的第一个元素)
front=1
队列空状态(empty): 当 rear = front 时,队列已空,无法出队
rear=3
出队状态(get): front 当队列未空时,数据出队,front后移 从图示可知,front指向队首的位置,即队首元素位置
队列满状态(full): 当 rear = maxsize-1 时,队列已满,无法在入队
front=3
入队状态(add): rear 队列未满情况下,数据入队,rear后移 从图示可知,rear指向位置,包含队尾的元素
队列满状态(full): 当 rear = maxsize 时,队列已满,无法在入队
rear=-1
出队状态(get): front 当队列未空时,数据出队,front后移 从图示可知,front指向队首的前一个位置,不包含队首
0 条评论
回复 删除
下一页