【数据结构队列的应用】用队列打印杨辉三角

数学中的杨辉三角大家都不陌生,那怎样用程序的方式求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);
	}

}
程序运行结果如下:



posted on 2016-03-12 11:00  海南一哥  阅读(884)  评论(0编辑  收藏  举报

导航