java队列打印杨辉三角,队列基础 (用队列打印杨辉三角)

这里,我们用的队列是循环队列。

解决这个问题很简单,打印一行,存一行

代码如下:

#include

#include

#include

#include

#define MaxSize 10 // 代码只能打印9行

typedef struct

{

int data[MaxSize];

int front;

int rear;

}SqQueue;

void InitQueue(SqQueue *Q)

{

Q->front=0;

Q->rear=Q->front;

}

int EnQueue(SqQueue *Q , int e)

{

if( (Q->rear+1)%MaxSize == Q->front )

{

printf("Full!");

return 0;

}

else

{

Q->rear=(Q->rear+1)%MaxSize;

Q->data[Q->rear]=e;

return 1;

}

}

int OutQueue(SqQueue *Q , int *e)

{

if( Q->front==Q->rear )

{

printf("Vacant!");

return 0;

}

else

{

Q->front=(Q->front+1)%MaxSize;

(*e)=Q->data[Q->front];

printf("%d ",(*e));

return 1;

}

}

int UseQueue(SqQueue *Q , int *e)

{

if( Q->front==Q->rear )

{

printf("Vacant!");

return 0;

}

else

{

*e=Q->data[(Q->front+1)%MaxSize];

return 1;

}

}

void Printftrangle( int N )

{

SqQueue Q;

InitQueue(&Q);

int i,j,x,y,z,n;

// int N=1;

EnQueue(&Q,1);

for(n=1;n

{

EnQueue(&Q,1);

for(i=1;i<=n-1;i++)

{

OutQueue(&Q,&x);

UseQueue(&Q,&y);

z=x+y;

EnQueue(&Q,z);

}

OutQueue(&Q,&x);

putchar(10);

EnQueue(&Q,1);

}

while(Q.front!=Q.rear)

{

OutQueue(&Q,&j);

}

}

int main()

{

int N;

scanf("%d",&N);

Printftrangle(N);

getchar();

getchar();

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值