打印杨辉三角

代码没有考虑杨辉三角的输出格式,代码如下:

 

#include  < stdio.h >
#include 
< stdlib.h >
#define  OVERFLOW -2
#define  INFEASIBLE -1
#define  ERROR 0
#define  OK 1
#define  TRUE 1
#define  FALSE 0
#define  MAXQSIZE 10
typedef 
int  QElemType;
struct  SqQueue
{
    QElemType 
*base;
    
int front;
    
int rear;
}
;

int  InitQueue(SqQueue  * Q)
 
// 构造一个空队列Q
   Q->base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
   
if(!Q->base// 存储分配失败
     exit(OVERFLOW);
   Q
->front=Q->rear=0;
   
return OK;
 }


int  QueueEmpty(SqQueue Q)
 
// 若队列Q为空队列,则返回TRUE,否则返回FALSE
   if(Q.front==Q.rear) // 队列空的标志
     return TRUE;
   
else
     
return FALSE;
 }


int  GetHead(SqQueue Q,QElemType  * e)
 
// 若队列不空,则用e返回Q的队头元素,并返回OK,否则返回ERROR
   if(Q.front==Q.rear) // 队列空
     return ERROR;
   
*e=*(Q.base+Q.front);
   
return OK;
 }


int  EnQueue(SqQueue  * Q,QElemType e)
 
// 插入元素e为Q的新的队尾元素
   if((Q->rear+1)%MAXQSIZE==Q->front) // 队列满
     return ERROR;
   Q
->base[Q->rear]=e;
   Q
->rear=(Q->rear+1)%MAXQSIZE;
   
return OK;
 }


int  DeQueue(SqQueue  * Q,QElemType  * e)
 
// 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR
   if(Q->front==Q->rear) // 队列空
     return ERROR;
   
*e=Q->base[Q->front];
   Q
->front=(Q->front+1)%MAXQSIZE;
   
return OK;
 }


void  YangHuiTriangle( int  N)
{
    SqQueue Q;
    
int n,i,temp,x;
    InitQueue(
&Q);
    EnQueue(
&Q,1);    //第1行元素入队
    for(n=2;n<=N;n++)
    
{
        EnQueue(
&Q,1);    //第n行第1个元素入队
        for(i=1;i<=n-2;i++)
        
{
            DeQueue(
&Q,&temp);
            printf(
"%3d",temp);//打印第n-1行元素    
            GetHead(Q,&x);
            temp
=temp+x;
            EnQueue(
&Q,temp);
        }

        DeQueue(
&Q,&x);
        printf(
"%3d ",x);
        EnQueue(
&Q,1);
    }

    
while(!QueueEmpty(Q))
    
{
        DeQueue(
&Q,&temp);
        printf(
"%3d",temp);
    }

}


void  main()
{
    
int N;
    printf(
"请输入要打印的列数:");
    scanf(
"%d",&N);
    YangHuiTriangle(N);
}





 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值