/*****************************队列实现打印杨辉三角******************************/
#include
#include
#include
//#include
#defineTRUE1
#defineFALSE0
#defineMaxsize100
typedefunsignedlongintUINT;
typedefstruct
{
UINTdata[Maxsize];
intfront,rear;
}Sequeue;//顺序队列的类型
Sequeue*Sq,mysq;
voidSetNull(Sequeue*sq);//置队空
intEmpty(Sequeue*sq);//判队空
intEnqueue(Sequeue*sq,UINTx);//入队
UINTDequeue(Sequeue*sq);//出队
voidmain(void)
{
UINTn;//杨辉三角的行数(阶数)
UINTi,j;//i控制行数循环,j为每行的输出个数控制变量
UINTtemp1,temp2;
Sq=&mysq;
Redo:
SetNull(Sq);
cout<<"\n请输入杨辉三角的阶数n:";
cin>>n;
Enqueue(Sq,1);
cout<for(i=1;i<=n;i )
{
temp2=0;
for(j=1;j{
temp1=Dequeue(Sq);
printf("-5lu",temp1);
temp2 =temp1;
Enqueue(Sq,temp2);
temp2=temp1;
}
Dequeue(Sq);//最后一个元素:1出队
printf("1\n");
temp2 ;//temp2 =1;
1即是最后一个元素
Enqueue(Sq,temp2);
Enqueue(Sq,1);//最后一个元素1入队
//_sleep(100);
//i行有i个元素,j控制打印的个数j=1;j//打印第i行,并将其全部入队
}
printf("Doyouwanttocontinue?\nYorN?\n");
intresponse;
response=getche();
if(response==’Y’||response==’y’)
gotoRedo;
else
cout<<"\nPressanykeytoexit..."<getch();
}
voidSetNull(Sequeue*sq)
{
sq->front=Maxsize-1;
sq->rear=Maxsize-1;
}
intEmpty(Sequeue*sq)
{
if(sq->rear==sq->front)
returnTRUE;
else
returnFALSE;
}
intEnqueue(Sequeue*sq,UINTx)
{
if(sq->front==(sq->rear 1)Maxsize)
{
printf("队列已满!\n");
returnFALSE;
}
else
{
sq->rear=(sq->rear 1)Maxsize;
sq->data[sq->rear]=x;
returnTRUE;
}
}
UINTDequeue(Sequeue*sq)
{
if(Empty(sq))
{
printf("队列是空的!\n");
returnFALSE;
}
else
{
sq->front=(sq->front 1)Maxsize;
return(sq->data[sq->front]);
}
}