利用队列的基本操作实现杨辉三角的输出

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#define Max 30

typedef struct{

int *base;

int front;

int rear;

}SqQueue;

int InitQueue(SqQueue &Q);//队列的初始化

int EnQueue(SqQueue &Q,int e);//数据进队(从队尾传值)int DeQueue(SqQueue &Q,int &e);//数据出队(返回队头)void YHPrint(SqQueue &Q,int n);//打印杨辉

int InitQueue(SqQueue &Q)

{

Q.base=(int *)malloc(Max*sizeof(int));

if(!Q.base)

return 0;//储存分配失败

Q.front=Q.rear=0;

return 1;

}

int EnQueue(SqQueue &Q,int e)

{

if((Q.rear+1)%Max==Q.front) return 0;//判断队满

Q.base[Q.rear]=e;

Q.rear=(Q.rear+1)%Max; return 1;

}

int DeQueue(SqQueue &Q,int &e) {

if(Q.front==Q.rear)//判断队空return 0;

e=Q.base[Q.front];

Q.front=(Q.front+1)%Max; return e;

}

void YHPrint(SqQueue &Q,int n) {

int i,j,k,e,s1;

for(i=1;i<=n;i++)

{

for(k=0;k

printf(" ");

for(j=1,s1=0;j

{

int s2;

s2=DeQueue(Q,e);

printf("%d",s1+s2);

printf(" ");

EnQueue(Q,s1+s2);

s1=s2;

}

printf("1");

EnQueue(Q,1);

printf("\n");

}

}

//主函数

main()

{

int n,t;

SqQueue Q;

printf("杨辉三角:\n执行请输入:1,退出请输入:2!\n");

scanf("%d",&t);

do{

switch(t)

{

case 1:{

InitQueue(Q);

printf("请输入杨辉三角的层数:\n");

scanf("%d",&n);

YHPrint(Q,n);

};break;

case 2:printf("欢迎再次使用!");break; default:printf("输入错误:");break;

}

if(t==1)

{

printf("请继续输入:1,退出请输入:2!\n");

scanf("%d",&t);

}

}while(t==1);

return 0;

}

相关文档
最新文档