用队来计算杨辉三角
程序代码:
//输出时只有第一行的1输出了,后面输出的是一大堆奇怪的数字,求指教
#include<stdio.h>
#define maxsize 100
typedef struct{int data[maxsize];
int rear;
int length;
}Queue,*QQueue;
void init(QQueue Q)
{
Q->rear=0;
Q->length=0;
return;
}
void Enter(QQueue Q,int x)
{
if(Q->length==maxsize);
return;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%maxsize;
return;
}
int Delete(QQueue Q,int *x)
{
if(Q->length==0);
return 0;
*x=Q->data[(Q->rear-Q->length+maxsize)%maxsize];
Q->length--;
return *x;
}
void Get(QQueue Q,int *x)
{
if(Q->length==0)
return;
*x=Q->data[(Q->rear-Q->length+maxsize)%maxsize];
}
void YHTriangle()
{
Queue Q;
int n=7;
int a1,a2;
int i,k;
init(&Q);
printf("%-3d\n",1);
Enter(&Q,1);
Enter(&Q,1);
for(i=2;i<=n;i++)
{
Enter(&Q,1);
for(k=0;k<=i-2;k++)
{
Delete(&Q,&a1);
Get(&Q,&a2);
printf("%-3d",a1);
Enter(&Q,a1+a2);
}
Delete(&Q,&a2);
printf("%-3d\n",a2);
Enter(&Q,1);
}
}
main()
{
Queue Q;
YHTriangle();
}




