2个回答
2018-02-19
展开全部
循环队列
Q[0:m]是
首先 队列一开始是
front = rear = m,所有队列都是x,表示无效数据。
【1】【2】【3】【4】.......【m-1】【m】
【x】【x】【x】【x】.......【x 】【 x 】
如果插入一个数据 【a】表示有效数据
那么 front = 1, rear = m
【1】【2】【3】【4】.......【m-1】【m】
【a】【x】【x】【x】....... 【 x 】【x】
接着在插入一个数据 【b】表示有效数据
那么 front = 2, rear = m
【1】【2】【3】【4】.......【m-1】【m】
【a】【b】【x】【x】.......【 x 】【x】
我们看到 front < rear,这时候有两个数据,你可以想象成 是在rear后面插入到 【m+1】和【m+2】位置,意味着 front在此时的意义相当于 front + m, 因此 数据个数是 front+ m - rear = 2,这就是为什么要计入m,当 front < rear。
接下来我们删除(pop)一个数据,
那么 front = 2, rear = 1
【1】【2】【3】【4】.......【m-1】【m】
【x】【b】【x】【x】.......【x 】【x】
这时候数据总个数是1, front - rear = 1;由于 front > rear ,这时候就不需要加 m了。
Q[0:m]是
首先 队列一开始是
front = rear = m,所有队列都是x,表示无效数据。
【1】【2】【3】【4】.......【m-1】【m】
【x】【x】【x】【x】.......【x 】【 x 】
如果插入一个数据 【a】表示有效数据
那么 front = 1, rear = m
【1】【2】【3】【4】.......【m-1】【m】
【a】【x】【x】【x】....... 【 x 】【x】
接着在插入一个数据 【b】表示有效数据
那么 front = 2, rear = m
【1】【2】【3】【4】.......【m-1】【m】
【a】【b】【x】【x】.......【 x 】【x】
我们看到 front < rear,这时候有两个数据,你可以想象成 是在rear后面插入到 【m+1】和【m+2】位置,意味着 front在此时的意义相当于 front + m, 因此 数据个数是 front+ m - rear = 2,这就是为什么要计入m,当 front < rear。
接下来我们删除(pop)一个数据,
那么 front = 2, rear = 1
【1】【2】【3】【4】.......【m-1】【m】
【x】【b】【x】【x】.......【x 】【x】
这时候数据总个数是1, front - rear = 1;由于 front > rear ,这时候就不需要加 m了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询