您的位置:首页 > 其它

利用循环队列实现杨辉三角的打印

2017-11-01 13:28 323 查看
#define MAXSIZE 100
#include <iostream>
using namespace std;
typedef int SElemType;
typedef struct
{
SElemType *base;
int front;
int rear;
}SqQue;
void InitQue(SqQue &Q)
{
Q.base=new SElemType[MAXSIZE];
Q.front=Q.rear=0;
}
int  CreatQue(SqQue &Q,int e)
{
if((Q.rear+1)%MAXSIZE==Q.front)
return 0;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE;
return 1;
}
int OutQue(SqQue &Q,int &e)
{
if(Q.rear==Q.front)
return 0;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXSIZE;
return 1;
}
int main()
{
SqQue sq;
int e=1,j=0,status=-1;
printf("请输入打印的行数\n");
scanf("%d",&j);
InitQue(sq);
for(int n=0;n<j;n++)
{
for(int m=0;m<j-1-n;m++)
{
printf(" ");
}
if(n==0)
{
cout<<"1"<<endl;
CreatQue(sq,e);
}
else
{
int t1=0,t2=0;
for(int r=0;r<n;r++)
{
OutQue(sq,e);
t1=t2;
t2=e;
e=t1+t2;
CreatQue(sq,e);
cout<<e<<" ";
}
cout<<"1"<<endl;
e=1;
CreatQue(sq,e);
}
}
return 1;
}


这段代码直供给初学数据结构的小白们使用,有很多的不足与偷工减料的地方。没有判断是否队空与队满,只是简单地进行了操作。而且与别的博主写的代码相比是在是LOW爆了,打印方法上也是很蠢得利用空格字符数来进行的打印,但是很好理解,希望大家都能写出更优化的代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: