杨辉三角队列实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网上看了许多杨辉三角队列实现的代码,结果运行时都或多或少有点小问题,为此我提供一份自己运行正确的。
程序无误,细心做一下
注意,这是做成三个文件运行的
第一个文件命名 stdafx.h
#include
#include
#define Max 50
struct queue
{
int *base;
int front;
int rear;
};
typedef struct queue *SqQueue;
SqQueue InitQueue();//队列的初始化
int EnQueue(SqQueue Q,int e);//数据进队(从队尾传值)
int DeQueue(SqQueue Q);//数据出队(返回队头)
void YHPrint(SqQueue Q,int n);//打印杨辉三角
void jiemian();//界面函数,方便调用(个人习惯)
第二个文件命名为 stdafx.c
#include "stdafx.h"
int GetQueueFirstData(SqQueue Q)
{ return Q->base[Q->front];
}
int isEmptyQueue(SqQueue Q)
{ if(Q->front=Q->rear)
return 1;
else
return 0;
}
SqQueue InitQueue()
{ SqQueue Q;
Q=(SqQueue)malloc(sizeof(struct queue));
if (Q==NULL)
return NULL;
Q->base=(int *)malloc(Max*sizeof(int));
if(Q->base==NULL)
return NULL;
Q->front=Q->rear=0;
return Q;
}
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,s1;
int s2;
for(i=1;i<=n;i++)
{
for(k=0;k printf(" "); for(j=1,s1=0;j { s2=DeQueue(Q); printf("%d",s1+s2); printf(" "); EnQueue(Q,s1+s2); s1=s2; } printf("1"); EnQueue(Q,1); printf("\n"); } } void jiemian() { int n,t; SqQueue Q; printf("杨辉三角:执行请输入:1,退出请输入:2!\n"); scanf("%d",&t); do{ switch(t) { case 1:{ Q=InitQueue(); 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); } 第三个主程序命名 succeed.c 就可以了,这样模块化。 #include "stdafx.c" int main() { jiemian(); return 0; } 程序无误,细心做一下 给代码链接,自己运行 Qq网盘 /1bb49fc61d3aea83a13fc8f1783cab87百度云 /s/1geKPYsr