关于循环队列的,有谁可以告诉我???
/*4阶斐波那契序列如下:f0=f1=f2=0, f3=1,…,fi=fi-1+fi-2+fi-3+fi-4,
利用容量为k=4的循环队列,构造序列的前n+1项(f0, f1 , f2 ,… fn )
,要求满足fn ≤200而fn+1 >200。*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int f[100];
int n;
#define MAX 200
typedef struct {
int *elem;
int front;
int rear;
}SqQueue;
//初始化
bool InitQueue(SqQueue &Q)
{
Q.elem=(int *)malloc(4*sizeof(int));
if(!Q.elem)
return 0;
Q.front=Q.rear=0;
return 1;
}
//添加
bool EnQueue(SqQueue &Q,int e)
{
Q.rear=(Q.rear+1)%4;Q.elem[Q.rear]=e;
return 1;
}
//删除
bool DeQueue(SqQueue &Q,int &e)
{
Q.front=(Q.front+1)%4;e=Q.elem[Q.front];
return 1;
}
void fb(int k)
{
SqQueue cq;
InitQueue(cq);
int i;
for( i=0;i<=k-2;i++)
{
cq.elem[i]=0;
f[i]=0;
}
cq.elem[k-1]=f[k-1]=1;
cq.rear=k-1;
n=k;
while(cq.elem[cq.rear]<MAX)
{
f[n]=0;
for(i=0;i<k;i++)
{
f[n]=f[n]+cq.elem[i];
}
EnQueue(cq,f[n]);
n++;
}
if(cq.elem[cq.rear]>MAX)
n=n-1;
else
n=n;
}
void main()
{
SqQueue cq;
InitQueue(cq);
fb(4);
printf("数列为:");
for(int i=0;i<n;i++)
printf("%d ",f[i]);
printf("sdfgffdgfdgfsdfgfdgfdgdf");
}
红色部分的两句为什么一交换位置会出错?