计算斐波那契序列
发布网友
发布时间:2022-05-08 18:08
我来回答
共2个回答
热心网友
时间:2024-01-26 05:07
//#include "link.h"
#include <iostream.h>
class Queue
{
public:
void clear();
bool enQueue(int item);
bool deQueue(int &item);
bool getFront(int &item);
bool isEmpty();
bool isFull();
void print();
};
class arrQueue:public Queue
{
private:
int mSize;
int front;
int rear;
int *qu;
public:
arrQueue(int size)
{
mSize=size+1;
qu=new int[mSize];
front=rear=0;
}
~arrQueue()
{
delete [] qu;
}
void print()
{
int tempfront=front;
for (int i=0;i<(mSize+rear-front)%mSize;i++)
{
cout<<qu[tempfront]<<" ";
tempfront=(tempfront+1)%mSize;
}
cout<<endl;
}
void clear()
{
front=rear;
}
bool enQueue(int item)
{
if (((rear+1)%mSize)==front)
{
cout<<"队列已满,溢出"<<endl;
return false;
}
qu[rear]=item;
rear=(rear+1)%mSize;
return true;
}
bool deQueue(int &item)
{
if (front==rear)
{
cout<<"队列为空"<<endl;
return false;
}
item=qu[front];
front=(front+1)%mSize;
return true;
}
bool getFront(int &item)
{
if (front==rear)
{
cout<<"队列为空"<<endl;
return false;
}
item=qu[front];
return true;
}
bool isEmpty()
{
if (front==rear)
{
cout<<"队列为空"<<endl;
return true;
}
cout<<"队列不为空"<<endl;
return false;
}
bool isFull()
{
if (((rear+1)%mSize)==front)
{
cout<<"队列已满,溢出"<<endl;
return true;
}
cout<<"队列不满!"<<endl;
return false;
}
};
//
// class lnkQueue:public Queue
// {
// private:
// int size;
// Node *front;
// Node *rear;
// public:
// lnkQueue(int size)
// {
// size=0;
// front=rear=NULL;
// }
// void clear()
// {
// while(front!=NULL)
// {
// rear=front;
// front=front->next;
// delete rear;
// }
// rear=NULL;
// size=0;
// }
// ~lnkQueue()
// {
// clear();
// }
// bool enQueue(int item)
// {
// if (rear==NULL)
// {
// front=rear=new Node(item);
// }
// else
// {
// rear->next=new Node(item);//没有头结点 直接就是数据节点
// rear=rear->next;
// }
// size++;
// return true;
// }
// bool isEmpty()
// {
// if (size==0)
// {
// cout<<"队列为空"<<endl;
// return true;
// }
// cout<<"队列不为空"<<endl;
// return false;
// }
// bool getQueue(int &item)
// {
// if (front==NULL)
// {
// rear=NULL;
// }
// if (isEmpty())
// {
// return false;
// }
// item=front->data;
//
// size--;
// return true;
// }
// bool deQueue(int &item)
// {
// if (front==NULL)
// {
// rear=NULL;
// }
//
// if (isEmpty())
// {
// return false;
// }
// item=front->data;
// size--;
// return true;
// }
//
// };
#include "Queue.h"
void main()
{
int N=0,queuefront=0,zerotimes=0,tempfront=0;
while(1)
{
cout<<"输入(a=+b)的N次方中N的值";
cin>>N;
arrQueue a(100);
if (N==0)
{
cout<<"(a+b)的"<<N<<"次方"<<"等于0"<<endl;
return;
}
else
{
a.enQueue(0);
a.enQueue(1);
a.enQueue(1);
a.enQueue(0);
a.print();
for (int m=1;m<N;m++)
{
while (1)
{
a.deQueue(queuefront);
if (queuefront==0)
{
zerotimes++;
}
a.enQueue(tempfront+queuefront);
tempfront=queuefront;
if (zerotimes==2)
{
a.enQueue(0);
a.print();
zerotimes=0;
break;
}
}
}
}
cout<<"(a+b)的"<<N<<"次方"<<"等于";
a.print();
a.clear();
}
}
热心网友
时间:2024-01-26 05:07
哈哈,动作比我快