标题:关于循环队列的,有谁可以告诉我???
只看楼主
enenen
Rank: 1
等 级:新手上路
帖 子:11
专家分:4
注 册:2011-7-6
结帖率:100%
 问题点数:0 回复次数:1 
关于循环队列的,有谁可以告诉我???
                     


                         /*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");

}


红色部分的两句为什么一交换位置会出错?
搜索更多相关主题的帖子: 200 include 
2011-07-10 19:55
世界模型
Rank: 4
等 级:业余侠客
威 望:1
帖 子:240
专家分:226
注 册:2010-9-12
得分:0 
先找到相应的位置,再赋值
2011-07-24 00:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-345164-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.799713 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved