当先锋百科网

首页 1 2 3 4 5 6 7

利用队列打印杨辉三角型。
代码如下:

#include<stdio.h>
#define maxsize 50
typedef struct{
 int a[maxsize];
 int front;
 int rear;
 //int tag=0;
}seqqueue;
void initqueue(seqqueue *p){
 p->front=p->rear=0;
} 
int enterqueue(seqqueue *p,int x){
 if((p->rear+1%maxsize==p->front))
 return 0;
 p->a[p->rear]=x;
 p->rear=(p->rear+1)%maxsize;
 return 1;
}
int deletequeue(seqqueue *q,int *x){
 if(q->front==q->rear)
 return 0;
 *x=q->a[q->front];
 q->front=(q->front+1)%maxsize;
 return 1;
}
void getheard(seqqueue *p,int *x){
 *x=p->a[p->front];
}
int isEmpty(seqqueue *p){
 if(p->front==p->rear)
 return 1;
 else return 0;
}
void YangHuiTriangle()
{
 printf("请输入你要打印的杨辉三角的层数:");
 int y;
 scanf("%d",&y);
 int temp,x;
 int a,b;
 seqqueue Q;
 initqueue(&Q);
 enterqueue(&Q,1);
 for(int n=2;n<=y;n++){
  enterqueue(&Q,1);
  for(int i=1;i<=n-2;i++){
   deletequeue(&Q,&temp);
   printf("%d ",temp);
   getheard(&Q,&x);
   temp=temp+x;
   enterqueue(&Q,temp);
  }
  
  deletequeue(&Q,&x);
  printf("%d ",x);
  enterqueue(&Q,1);
  printf("\n");
 }
 
 while(!isEmpty(&Q)){
 deletequeue(&Q,&x);
    printf("%d ",x);
 }
}
int main(){
 YangHuiTriangle();
}

运行结过如下:在这里插入图片描述

  • 新手写的,可能不是最优解,但勉强解决了问题,如果感到对你有所帮助,点个赞吧!!!
      祝你幸福!