【数据结构队列的应用】用队列打印杨辉三角
数学中的杨辉三角大家都不陌生,那怎样用程序的方式求n行的杨辉三角呢?方法很多,队列就是其中的一种。下面给出基于队列实现的杨辉三角。
# include<stdio.h> # define M 100 typedef struct { int a[M]; int front,rear; }sq; void init(sq *q) { q->rear=q->front=0; } int enter(sq *q,int x) { if((q->rear+1)%M==q->front) { return 0; } else { q->a[q->rear]=x; q->rear=(q->rear+1)%M; return 1; } } int delet(sq *q,int *x) { if(q->front==q->rear) { return 0; } else { *x=q->a[q->front]; q->front=(q->front+1)%M; return 1; } } int get(sq *q,int *x) { if(q->front==q->rear) { return 0; } else { *x=q->a[q->front]; return 1; } } void main() { sq q; int n,m,i,x,y; init(&q); printf("请输入杨辉三角的行数\n"); scanf("%d",&m); enter(&q,1); for(n=2;n<=m;n++) { enter(&q,1); for(i=1;i<=n-2;i++) { delet(&q,&x); printf("%d ",x); get(&q,&y); y=y+x; enter(&q,y); } delet(&q,&x); printf("%d",x); printf("\n"); enter(&q,1); } while(q.front!=q.rear) { delet(&q,&x); printf("%d ",x); } }程序运行结果如下: