为什么循环队列队满的是(rear+1)%max_queue_size=front不可以是rear.next=front
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 21:55:55
为什么循环队列队满的是(rear+1)%max_queue_size=front不可以是rear.next=front
另一种方式就是数据结构常用的:队满时:(rear+1)%n==front,n为队列长度(所用数组大小),由于rear,front均为所用空间的指针,循环只是逻辑上的循环,所以需要求余运算.如图情况,队已满,但是rear(5)+1=6!=front(0),对空间长度求余,作用就在此6%6=0=front(0).
去链接里仔细看看图
再问: 那为什么不可以是rear.next=front,还有rear(5)+1为什么等于6!为什么等于front(0),循环只是逻辑上的循环是什么意思
再答: ....看图没呀... 循环队列说白了就是个数组,只不过当到达队尾时,让它回到队头. 还有这是定义 typedef struct{ int front; //头指针,队非空时指向队头元素 int rear; //尾指针,队非空时指向队尾元素的下一位置 int count;//计数器,记录队中元素总数 DataType data[QueueSize]; }CirQueue; 根本没有rear.next这个好不.... 如图数组是 0 1 2 3 4 5 rear此时为5,那rear+1不就是6了....然后长度为6,所以求余为0呀,就是队头
再问: rear此时为5为什么是5, int rear; //尾指针,队非空时指向队尾元素的下一位置,那怎么不是6, 还有数组是1 2 3 4 5 6,rear此时为多少呢
再答: 数组的下标从0开始,如果一个数组0 1 2 3 4 5,数组长度n=6 这时rear不能是6,因为就没有开辟空间到六,所以当rear要指向6时,就让他返回到0,这次才是循环麻。 所以每次入队时,都要判断下rear+1是否为n,如果相等就入队,然后令rear=0.不相等就令rear+1 但这个缺点就是即使rear==front,也不能说明队是空还是满 所以用了2种办法来解决,其中一个办法就是设一个空位,就比入说这个数组A 0 1 2 3 4 5 A[5]就不能存储数据,所以rear可以等于5,因为下标是从0开始的,所以当(rear+1)%n==front时,队为满。若rear=front时为空
再问: int rear; //尾指针,队非空时指向队尾元素的下一位置 问下那为什么元素x入队列,rear指向x,而不是x得下一个位置
再答: 就是指向x的下一个呀,比如说数组有5个就是 0 1 2 3 4 a b c f r 0,1,2有a,b,c。front指向0,rear指向3 0 1 2 3 4 a b c x f r x入队就变成这样了,这就是队满了,因为设定的就是最后一位不能放
再问: 你有QQ吗?可以给我吗?我发图片给你看,这个发不了图片
再答: 453508335
去链接里仔细看看图
再问: 那为什么不可以是rear.next=front,还有rear(5)+1为什么等于6!为什么等于front(0),循环只是逻辑上的循环是什么意思
再答: ....看图没呀... 循环队列说白了就是个数组,只不过当到达队尾时,让它回到队头. 还有这是定义 typedef struct{ int front; //头指针,队非空时指向队头元素 int rear; //尾指针,队非空时指向队尾元素的下一位置 int count;//计数器,记录队中元素总数 DataType data[QueueSize]; }CirQueue; 根本没有rear.next这个好不.... 如图数组是 0 1 2 3 4 5 rear此时为5,那rear+1不就是6了....然后长度为6,所以求余为0呀,就是队头
再问: rear此时为5为什么是5, int rear; //尾指针,队非空时指向队尾元素的下一位置,那怎么不是6, 还有数组是1 2 3 4 5 6,rear此时为多少呢
再答: 数组的下标从0开始,如果一个数组0 1 2 3 4 5,数组长度n=6 这时rear不能是6,因为就没有开辟空间到六,所以当rear要指向6时,就让他返回到0,这次才是循环麻。 所以每次入队时,都要判断下rear+1是否为n,如果相等就入队,然后令rear=0.不相等就令rear+1 但这个缺点就是即使rear==front,也不能说明队是空还是满 所以用了2种办法来解决,其中一个办法就是设一个空位,就比入说这个数组A 0 1 2 3 4 5 A[5]就不能存储数据,所以rear可以等于5,因为下标是从0开始的,所以当(rear+1)%n==front时,队为满。若rear=front时为空
再问: int rear; //尾指针,队非空时指向队尾元素的下一位置 问下那为什么元素x入队列,rear指向x,而不是x得下一个位置
再答: 就是指向x的下一个呀,比如说数组有5个就是 0 1 2 3 4 a b c f r 0,1,2有a,b,c。front指向0,rear指向3 0 1 2 3 4 a b c x f r x入队就变成这样了,这就是队满了,因为设定的就是最后一位不能放
再问: 你有QQ吗?可以给我吗?我发图片给你看,这个发不了图片
再答: 453508335
为什么循环队列队满的是(rear+1)%max_queue_size=front不可以是rear.next=front
循环队列满时的判定为:(rear+1)/maxsize==front.
循环队列,队满时:(rear+1)%maxsize=front 为什么要对maxsize取余呢?
循环队列为空的标志或条件,到底是front=rear;还是front==rear.急.书上是==,书中课后题又是=.真题
循环队列的空条件A (sq.rear+1)%Maxsize==(sq.front+1)%Maxsize B (sq.re
循环队列的初始状态为空,即rear=front=m 这里m即为队列的存储空间
循环队列用数组A[0,.,m-1]存放其元素值,头尾指针front、rear,当前元素个数是
关于循环队列的问题:设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一个位置),尾指针rear=1
假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的判空条件为什么
计算循环队列元素个数!容量50,front=-45 rear=10 答案是15.请问计算公式是什么?ACCESS题目,请
设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=1
设循环队列的存储空间为Q(1:35),初始状态front=rear=35,先经过一系列入队和退队运算后,front=15