用队列打印杨辉三角

杨辉三角打印与队列之间的关系

  1. 杨辉三角有什么规律
  2. 队列的特点
  3. 思考之间的联系

答案:

  1. 杨辉三角的特点
  1. 除第一行外,其他各行两边得元素都是1
  2. 每行的行数和数字的数量相等,我们用n代替
  3. 每行除1之外的中间第1元素,是由上一行的第一个元素与第二个元素的和,第二个中心元素是第二个和第三个元素的和,以此类推
  4. 每行除1外的中间元素的数目=行数-2  ,2表示的是两边两个1
  1. 队列的特点
  1.  先入先出
  2. 可取队头队尾元素
  1. 联系

首先第一行,入队1

第二行 入队1,检查发现,不需要中心元素,对上一行元素出队列处理,入队1

第三行 入队1  判断需要一个中心元素(根据n-2),即上一行的第一个元素和第二个元素的和,将                         上一行元素分别出栈add,temp,存储,相加,值进行这次的入队列,然后将第二个                          出栈的值temp,赋给add(给第二个中心元素的出现,提供便利),检查不需要再                          次中心元素 ,出循环

           入队1

第四行 入队1  需要一个中心元素,即上一行的第一个元素和第二个元素的和,将上一行

                     元素分别出栈add,temp,存储,相加,值进行这次的入队列,然后将第二个出栈的                         值,赋 给add,检查到中间元素还需要一个,则将继续出队列,并将其赋值给b,然                        后将值继 续送入栈中,将temp赋给add,继续检查不需要中心元素,出循环

           入队1

不断循环。。。

      

 void yanghui(int N)
{
	int i, n, temp, m, add;
	LinkQueue Q;
	InitQueue(Q);
	m = N;//表示行数
	n = 1;//

	while (N >= n)
	{
		for (i = --m; i > 0; i--)
			
		printf(" ");//预留空间 
		printf(" 1");//输出格式 
		EnQueue(Q, 1);//入队列 
		if (n == 1)
		{
			n++;
			printf("\n");
			continue;
		}
		DeQueue(Q, add);//出队列 
	
		for (i = 0; i < n-2; i++)
		{
			DeQueue(Q, temp);
			printf(" %d", temp + add);
			
			EnQueue(Q, add + temp);
			
			add = temp;
		}
		printf(" 1\n");
		
		EnQueue(Q, 1);
		n++;
	};
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榆树12138

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值