打印二项式系数表(即杨辉三角)
1
1 2 1
1 3 3 1
1 4 6 4 1
系数表中的第K行有k+1个数,除了第一个数和最后一个数为1外,其余的数则为上一行中位其左右的两数之和。
如果要求计算并输出杨辉三角前N行的值,则队列的最大空间应为n+2(第N行有n+1个数,且根据循环队列的特性:“少用一个元素”,但在这里少用的那个元素用来存放临界值“0”)。
#include"QueueSq.cpp"
void InitQueue(SqQueue &Q,int n)
{
Q.elem=new QElemType[n];
//为循环队列分配空间(比实际能用多一个元素)
Q.queuesize=n;
Q.incrementsize=QUEUEINCREMENT;
Q.top=Q.rear=0;
}
void YangHui(int n)
{
SqQueue Q;
int i,k;
for(i=1;i<=n;i++)
cout<<" ";
cout<<"1"<<endl;//在中心位置输出杨辉三角形的最顶端的1
InitQueue(Q,n+2);//设置最大容量为n+2的空队列,且因为循环队列的创建队列的函数不含int型参数,所以定义调用了InitQueue()函数来创建空队列
EnQueue_Sq(Q,0);//添加临