杨辉三角解析(队列实现)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

for(i=1;i<=N;++i)

{

for(j=0;j<30-3*i;++j)//打印每行前面的空格

printf(" ");

do

{

DeQueue();

GetHead();

if(e!=0) printf("%6d",e);

EnQueue();

}while(e!=0);

UpQueue();

puts("");//每行后回车换行

}

以n=4举例

结果为:

1 1

1 2 1

1 3 3 1

1 4 6 4 1

解析:

queue_size=n+2;//队列的最大容量queue_size=6(数组空间大小)

for(i=0;i

queue[i]=1,queue[i+1]=1,queue[i+2]=0;

front=i-1,rear=n+1;

初始化后的队列(queue数组):

front

0 0 1 1 0

rear

打印第一行(即for()循环中i=1)

DeQueue(); 删除队首元素,并将0赋值s 实际只将front向下移一位,front=2,即指向queue[2] GetHead(); 取队首元素,e= queue[front]= queue[2]=1

if(e!=0) printf("%6d",e); e!=0 打印e 即1

继续执行do……while语句因为e不为0

DeQueue(); 删除队首元素,并将queue[2]赋值s front=3

GetHead(); 取队首元素,e= queue[front]=queue[3]=1

if(e!=0) printf("%6d",e); e!=0 打印e 即1

EnQueue(); 在队尾添加元素s+e 此时queue[rear]=queue[0]=2 rear=1

继续执行do……while语句因为e不为0

DeQueue(); 删除队首元素,并将queue[3]赋值s front=4

GetHead(); 取队首元素,e= queue[front]=queue[4]=0

if(e!=0) printf("%6d",e); e==0 不执行printf()语句

EnQueue(); 在队尾添加元素s+e 此时queue[rear]=queue[1]=1 rear=2

此时e==0跳出do……while语句

即打印第一行完毕输出: 1 1

UpQueue(); 在队尾添加元素0 即queue[rear]=queue[2]=0 rear=3

队列为:

2 1 0 1 0 1

puts("");//每行后回车换行rear

front

打印第二行

DeQueue(); s=0 front=5

GetHead(); e=1

if(e!=0) printf("%6d",e); e!=0 打印e 即1

EnQueue(); 在队尾添加元素s+e 此时queue[rear]=queue[3]=1 rear=4

继续……

DeQueue(); s=1 front=6 对queue_size取模即指向queue[0] front=0

GetHead(); e=2

if(e!=0) printf("%6d",e); e!=0 打印e 即2

EnQueue(); 在队尾添加元素s+e 此时queue[rear]=queue[4]=3 rear=5

继续……

DeQueue(); s=2 front=1

GetHead(); e=1

if(e!=0) printf("%6d",e); e!=0 打印e 即1

EnQueue(); 在队尾添加元素s+e 此时queue[rear]=queue[5]=3 rear=6对queue_size取模即指向queue[0] rear=0

继续……

DeQueue(); s=1 front=2

GetHead(); e=0

if(e!=0) printf("%6d",e); e==0 不打印

EnQueue(); 在队尾添加元素s+e 此时queue[rear]=queue[0]=1 rear=1

此时e==0跳出do……while语句

即打印第二行完毕输出: 1 2 1

UpQueue(); 在队尾添加元素0 即queue[rear]=queue[1]=0 rear=2

队列为:

……

剩下依此类推……

相关文档
最新文档