当前位置:文档之家› 杨辉三角队列实现

杨辉三角队列实现

网上看了许多杨辉三角队列实现的代码,结果运行时都或多或少有点小问题,为此我提供一份自己运行正确的。

程序无误,细心做一下
注意,这是做成三个文件运行的
第一个文件命名 stdafx.h
#include<stdio.h>
#include<malloc.h>
#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<n-i;k++)
printf(" ");
for(j=1,s1=0;j<i;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。

相关主题