#include <stdio.h>
#include <stdlib.h>
#define M 50
typedef struct SeqQueue
{
int element[M];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue *Q)
{
Q->front=Q->rear=0;
}
int EnQueue(SeqQueue *Q,int data)
{
if((Q->rear+1)%M==Q->front)
return 0;
Q->element[Q->rear]=data;
Q->rear=(Q->rear+1)%M;
return 1;
}
int DeQueue(SeqQueue *Q,int *data)
{
if(Q->front==Q->rear)
return 0;
*data=Q->element[Q->front];
Q->front=(Q->front+1)%M;
return 1;
}
int GetHead(SeqQueue Q,int *data)
{
if(Q.front==Q.rear)
return 0;
*data=Q.element[Q.front];
return 1;
}
int main()
{
int n,i,t,data,m=1;
while(m>0&&m<36)
{
SeqQueue Q;
InitQueue(&Q);
EnQueue(&Q,1);
printf("请输入杨辉三角的行数(输入负数或者大于34的数退出):\n");
scanf("%d",&m);
m++;
for(n=2;n<=m;n++)
{
EnQueue(&Q,1);
for(i=1;i<n-1;i++)
{
DeQueue(&Q,&t);
printf("%d\t",t);
GetHead(Q,&data);
EnQueue(&Q,data+t);
}
DeQueue(&Q,&t);
printf("%d\t",t);
EnQueue(&Q,1);
printf("\n");
}
}
return 0;
}