大小为Max的循环队列中,f为队列头位置,r为队尾位置,元素个数
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 23:04:18
说明第一个数据在3的位置
选择A循环队列的原理你应该有点了解的,每次出队从队首取出一个元素,然后找到队列里下一个元素成为新的队首,故而需要front+1;因为是循环的,所以要能够从队尾回到队首,所以需要%m
这得看进队出队时指针的移动方向了,如果进队出队时,指针都做++运算,则为5,反之则为3.再问:也就是说f的值和r相比可能大也可能小,但是如果这个队列满的话,要么f=5,要么f=3?我这里都是++再答:
60-47得1350-13得37在第37位
选C (R-F+M) % M再问:没过程?再答:如果R>=F,那么中间一共有R-F那么多元素如果R
该循环队列中共有24个元素详见:http://baike.baidu.com/view/203647.htm?fr=aladdin
等于0的话这两个就是空指针了,而且队列的创建需要用到循环语句不断分配内存的,开始时头尾指针应该同时指向队列中第一个元素的内存空间
(n-p+r+1)mod(n)
2.答案,A,这个是根据循环队列的定义来了,教材在处理循环队列的溢出时,是空一位不用,所以队列中元素的个数(rear-front+m)%m;为什么+m是因为可能出现rear-front
∵front=8rear=7rea
1.F=F->next;R-next=F;2.顺序存储结构:O(logn)链式:O(n)再问:能说下具体算法吗再答:两个算法都要么??再问:恩再答:1.Type*outqueue(Type*Q,Tpy
d头指针为42,到下一个数的时候,指针+1变成43,所以到50的时候,指针为92
首先楼主的公式少加了一个括号,因为从优先级来说,求余是优先于加法的,所以正确的表达式应该是len=(rear-front+max)%max所以楼主的问题迎刃而解了,不是对maximum-front取余
内的随机整数,接着在队列未满时入队,紧跟着进行一次出队操作,主函数最后使队列中的所有元素依次出队.编程实现上述过程.
(f-r)%n分两种情况考虑:一,|----*****------|rf显然中间5个就是队列中的元素:(f-r)=(f-r)/n二,|****-----******|fr显然中间5个不是队列中的元素,
不对,是(rear+1)%maxsize==front,注意是"%"取余运算,而不是“/”除法运算
#defineMAXSIZE100typedefstruct{int*base;intfront;intrear;}SqQueue;intQueuelength(SqQueueQ)//返回Q的元素个数
有个设了队头,队尾的,你参考下,入队的时候队尾指针变,出队的时候队头指针变intEnQueue(CirQueue*Q,DataTypee)//入队{if(Q->quelen==QueueSize)/