设有一个具有n个单元的循环队列 头指针为front 尾指针为rear 试写出一个算法 求队列中元素的个数。

大学 队列,指针,算法 已帮助 人

设有一个具有n个单元的循环队列,头指针为front,尾指针为rear,试写出一个算法,求队列中元素的个数。

热搜:n阶矩阵a具有n个不同的特征值是a与对角矩阵相似的

答案解析

难度★★☆ 搜索
  • 循环队列元素个数的公式(rear-front+MAXLEN)%MAXLEN,在已知循环队列头指针front,尾指针rear和容量MAXLEN值后可方便求得。但为了对循环队列工作机制有更深入的了解,我们给出以下算法。
       算法由主函数和统计循环队列元素个数的两个函数组成。
       程序如下:
       #include<stdio.h>
       #define MAXLEN 20
       int countcq(int s[],int fp,int rp)    /*统计循环队列元素的个数*/
       {
         int count=0,front,rear;
         front=fp;
         rear=rp;
         while(front!=rear)    /*循环队列不为空,继续统计队列元素*/
         {
           front=(front+1)%MAXLEN;
           count=count+1;    /*统计计数器加1*/
         }
         return(count);
       }
       main()
       {
         int a[MAXLEN]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
         int count,front,rear;
         front=10;    /*可以在0到19之间修改front的值*/
         rear=5;    /*可以在0到19之间修改rear的值*/
         count=countcq(a,front,rear);
         printf("%d",count);
       }
     }
       输出结果为:
       15