设有一个具有n个单元的循环队列,头指针为front,尾指针为rear,试写出一个算法,求队列中元素的个数。
展开全部
【答案】:循环队列元素个数的公式(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\n",count);
}
}
输出结果为:
15
算法由主函数和统计循环队列元素个数的两个函数组成。
程序如下:
#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\n",count);
}
}
输出结果为:
15
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询