64,649
社区成员
发帖
与我相关
我的任务
分享
void yanghui ( int n )
{
// 打印输出杨辉三角的前 n( n>0 )行
Queue Q;
for( i=1; i<=n; i++)
cout<< ' ';
cout<< '1'<<endl; // 在中心位置输出杨辉三角最顶端的"1"
InitQueue(Q,n+2); // 设置最大容量为 n+2 的空队列
EnQueue(Q,0 ); // 添加行界值
EnQueue( Q,1);
EnQueue( Q,1 ); // 第一行的值入队列
k = 1;
while ( k < n )
{ // 通过循环队列输出前 n-1 行的值
for( i=1; i<=n-k; i++)
cout<< ' '; // 输出n-k个空格以保持三角型
EnQueue ( Q,0 ); // 行界值"0"入队列
do { // 输出第 k 行,计算第 k+1 行
Dequeue( Q,s );
GetHead( Q,e );
if (e) cout<< e << ' ';
// 若e为非行界值0,则打印输出 e 的值并加一空格
else cout << endl; // 否则回车换行,为下一行输出做准备
EnQueue(Q,s+e);
} while (e!=0);
k++;
} // while
DeQueue ( Q,e ); // 行界值"0"出队列
while (!QueueEmpty (Q) )
{ // 单独处理第 n 行的值的输出
DeQueue ( Q,e );
cout<<e<< ' ';
} // while
} // yanghui