#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的数退出): "); 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); GetHead(Q,&data); EnQueue(&Q,data+t); } DeQueue(&Q,&t); printf("%d ",t); EnQueue(&Q,1); printf(" "); } } return 0; }