/*斐波那契的递归函数*/
int Fbi(int i)
{if(i<2)
return i ==0?0:1;returnFbi(i-1)+ Fbi(i-2);}
int main(){
int i;for(int i =0;i <40;i++)printf("%d",Fbi(i));return0;}
循环队列–入队
/*若队列未满,则插入元素e为Q新的队尾元素*/
Status EnQueue(SqQueue *Q,QElemType e){if((Q->rear+1)%MAXSIZE==Q->front)/*队列满的判断*/returnERROR;Q->data[Q->rear]=e;/*将元素e赋值给队尾*/Q->rear=(Q->rear+1)%MAXSIZE;/*rear指针后移一位,若到最后则转到数组头部*/returnOK;}
循环队列–出队
/*若队列不空,则删除Q中队头元素,用e返回其值*/
Status DeQueue(SqQueue *Q,QElemType *e){if(Q->rear ==Q->front)/*队列空的判断*/returnERROR;*e=Q->data[Q->front];/*将队头元素赋值给e*/Q->front=(Q->front+1)%MAXSIZE;/*front指针后移一位,若到最后则转到数组头部*/returnOK;}
链式队列–入队
/*插入元素e为Q的新的队尾元素*/
Status EnQueue(LinkQueue *Q,QElemType e){
QueuePtr s=(QueuePtr)malloc(sizeof(QNode));if(!s)/*存储分配失败*/exti(OVERFLOW);
s->data=e;
s->next=NULL;Q->rear->next=s;/*将结点s赋值给原队尾结点的后继*/Q->rear=s;/*把结点s设置为队尾结点*/returnOK;}
链式队列–出队
/*若队列不空,删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR*/
Status DeQueue(LinkQueue *Q,QElemType *e){
QueuePtr p
if(Q->front==Q->rear)returnERROR;
p=Q->front->next;/*将欲删除的队头结点暂存给p*/*e=p->data;/*将欲删除队头结点的值赋值给e*/Q->front->next=p->next;/*将p的后继赋值给头结点后继*/if(Q->rear==p)
Q->rear=Q->front;/*若队头是队尾,则删除后rear指向头结点*/free(p);returnOK;}