/*静态结构实现四阶斐波那契数列*/
#include<stdio.h>
#define N 5
//静态存储结构实现队列
typedef struct {
int a[N];
int front;
int rear;
}Que;
//创建队列
void InitQueue(Que *q){
q->front = 0;
q->rear = 0;
}
//如队列函数
void EnQueue(Que *q,int e){
if((q->rear+1)%N ==q->front){
return ;
}
q->a[q->rear] = e;
q->rear = (q->rear+1)%N;
}
//出队列函数
void DeQueue(Que *q){
if(q->front == q->rear){
return ;
}
q->front = (q->front+1)%N;
}
//求和函数,求出第前四个数的总和
int sum(Que *q){
int sum=0,i;
for(i=q->front;i!=q->rear;i=(i+1)%N){
sum += q->a[i];
}
return sum;
}
// main function
main(){
Que Q;
int s;
int x; //用于赋前四个值
InitQueue(&Q);
for(int i=0;i<3;i++){ //为斐波那契数列前四位数赋值
EnQueue(&Q,0);
}
EnQueue(&Q,1);
printf("\n四阶斐波那契数列为:\n0 0 0 1 ");
s=sum(&Q);
while(s<=200){
printf("%d ",s);
DeQueue(&Q);
EnQueue(&Q,s);
s = sum(&Q);
}
}
/*动态存储结构实现四阶斐波那契数列*/
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
// 五个存储空间
#define MAXQSIZE 5
//动态实现顺序存储
typedef struct queue{
int *base;
int front;
int rear;
}Que;
//构造一个空队列
void InitQueue(Que *q){
q->base = (int *)malloc(sizeof(int)*MAXQSIZE);
if(!q->base){
exit(0);
}
q->front = q->rear = 0;
}
//元素入队列
void EnQueue(Que *q,int x){
if((q->rear+1)%MAXQSIZE ==q->front){
return ;
}
q->base[q->rear] = x;
q->rear = (q->rear+1)%MAXQSIZE;
}
//元素出队列
void DeQueue(Que *q){
if(q->front ==q->rear){
return ;
}
q->front = (q->front+1)%MAXQSIZE;
}
//求出前四项元素之和,并返回
int sum(Que *q){
int sum=0;
int i;
for( i=q->front;i!=q->rear;i=(i+1)%MAXQSIZE)
sum += q->base[i];
return sum;
}
main(){
Que Q;
InitQueue(&Q);
int s; //前四项元素之和
int i; //循环变量
//为前四个元素赋值
for(i=0;i<3;i++){
EnQueue(&Q,0);
}
EnQueue(&Q,1);
printf("\n四阶斐波那契序列为:\n0 0 0 1 ");
s = sum(&Q);
while(s<=200){
printf("%d ",s);
DeQueue(&Q);
EnQueue(&Q,s);
s = sum(&Q);
}
}