首页 > 试题广场 >

设数组data[0..m]作为循环队列sq的存储空间,fro

[填空题]

设数组data[0..m]作为循环队列sq的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front的值为1

两个指针(其实就是两个整数型变量,因为在这里有指示作用,所以这里理解为指针)front、rear,front指向队首元素,rear指向队尾元素的下一个元素。 rear和front互相追赶着,这个追赶过程就是队列添加和删除的过程,如果rear追到head说明队列满了,如果front追到rear说明队列为空。

为了方便起见,约定:初始化建空队时,令      front=rear=0,  当队空时:front=rear  当队满时:front=rear 亦成立  因此只凭等式front=rear无法判断队空还是队满。  有两种方法处理上述问题:    (1)另设一个标志位以区别队列是空还是满。    (2)少用一个元素空间,约定以“队列头指针front在队尾指针rear的下一个位置上”作为队列“满”状态的标志。即:  队空时: front=rear  队满时: (rear+1)%maxsize=front
所以,插入删除可以这么表示:
插入:rear = (rear+1)%m
删除:front = (front+1)%m
另外,本题中m其实是m+1

发表于 2017-07-10 20:43:12 回复(0)
???

发表于 2021-12-26 16:08:04 回复(0)
???
发表于 2017-06-18 13:23:28 回复(0)