求数据结构循环队列个数

题目如下:有一个用数组C[1..m]表示的环形队列,m为数组的长度。假设f为队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向)。若队列非空,则计算队列中元素个数的公式应为:答案是:(m+r-f) mod m我花了一张图,f是对头就是删除元素的一端,r是队尾就是插入元素的一端,那么他的元素个数按照图中顺时针不应该是(8-3=5个)吗,为什么按照答案的公式是3个呢?那不就成了8,1,2三个元素再队列中吗,不应该是4,5,6,7,8在队列中吗?

栈,队列,循环队列这个元素计算,要看具体定义的。栈顶指针或队列队尾指针如果指向即将入栈(或入队)的元素位置就是尾-头,对于循环队列应是(尾-头+数组的最大长度)%数组的最大长度
温馨提示:内容为网友见解,仅供参考
无其他回答

数据结构 求出循环队列中元素个数的计算公式
define MAXSIZE 100 typedef struct { int * base;int front;int rear;}SqQueue;int Queuelength(SqQueue Q) \/\/返回Q的元素个数 { return(Q.rear-Q.front+MAXQSIZE)%MAXSIZE;}

求循环队列的元素个数算法,已知front 和 rear,还有容量数,怎么求队列...
front为对头指针,rear为对尾指针,n为队列最大元素个数。队列元素个数=(rear-front+1+n)%n %是求余数。循环队列的元素个数计算公式:如果rear<front结果是rear-front+maxsize;如果rear>front结果是rear-front;为了用一个表达式同时表达两者,用(rear-front+maxsize)%maxsize;假设maxsize=10;re...

循环队列的元素个数是多少?
答案是0或35。前提条件是:此循环队列的存储空间全部用于存储数据,而没有留出一个存储空间用于判别队满与队空。在上述循环队列中,当front = rear时,(1)有可能是队空:先入队15个元素,rear = 15;再出队15个元素,front = 15。(2)有可能是队满:先入队15个元素,rear = 15;再出队15...

为什么数据结构里循环队列求元素个数要用(front-rear+n)%n?(n是最...
一个总长为10的循坏队列,在某一时刻其 头front=4,尾rear=7有4\/5\/6三个元素 这时往里面加五个元素,没有出列,就会变成 front=4,rear=2有4\/5\/6\/7\/8\/9\/0\/1八个元素 那么取绝对值长度就不对了,(2-4+10)%10=8,才是对的

二级计算机知识, 循环队列
解决这个问题的方法至少有两种:一种为另设一布尔变量以区别队列的空和满;另一种方式就是数据结构常用的: 队满时:(rear+1)%n==front,n为队列长度(所用数组大小)。由于rear,front均为所用空间的指针,循环只是逻辑上的循环,所以需要求余运算。类型定义采用环状模型来实现队列,各数据成员的...

数据结构顺序循环队列中取模(求余)问题,C语言
因为是循环队列 所以 完全有可能出现 队头在队尾后面的情况,即R<F 比如 一共10个元素 M=10 先入队9个元素,队头指向最后一个 即9 然后 出队5个元素,队尾指向5 再入队三个元素, 队头指向2 这是队内实际个数为(2-5+10)%10 = 7个 至于为什么要加上 是因为 当F=9 R=5的时候 (9...

[计算机二级公共基础知识]求教,循环队列的计算问题
设循环队列共有m个元素,rear对尾指针指向队尾元素,front队头指针指向队头元素前一个位置,即队列中队头元素在第21个位置,对尾元素在第15个位置,因此,队列中共有m-21+15+1=m-5个元素,又最坏情况下,元素一一比较,最后需要比较m-5-1=m-6次。如下图:...

循环队列长度公式原理
循环队列是一种利用数组实现的队列数据结构,它的长度公式可以通过如下原理来理解:循环队列中有两个指针,分别用于指向队列的头部和尾部,分别称为front和rear。当队列为空时,front和rear指向同一个位置。假设队列的容量为n,当向队列中添加一个元素时,rear指针向后移动一位,即rear = (rear + 1) ...

数据结构循环队列问题
你没理解“队列非空时front和rear分别指向队头元素和队尾元索”,根据这句话当队列只有一个元素时,front==rear;当队为空时,front==(rear+1)%n;进队的操作为:rear = (rear + 1) % n ;Queue[rear] = elem ;元素正好在下标为0的位置,此时front==rear==0。“队列非空时front和rear...

数据结构关于循环队列的问题
大小为6的数组:下标从0-5;从前面出队,从后面入队 front(前面)=3 rear(后面)=0 当出队列中删除一个元素,也就是出队,即front+1:=4 再插入两个元素,即rear+2= 2 【注】循环队列中,由于入队时尾指针向前追赶头指针;出队时头指针向前追赶尾指针,造成队空和队满时头尾指针均相等。因此...

相似回答