1. 程式人生 > >利用迴圈佇列列印楊輝三角(c語言實現)

利用迴圈佇列列印楊輝三角(c語言實現)

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

#define MAXQSIZE 200
typedef int QElemType;
typedef struct {
    QElemType  *base;
    int front;
    int rear;
}SqQueue;
void InitQueue(SqQueue *Q){
    //構造一個空佇列Q
    Q->base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
    if
(!Q->base)exit(1); Q->front=Q->rear=0; } int QueueLength(SqQueue *Q){ //返回Q的元素個數,即佇列的長度 int e; e=(Q->rear-Q->front+MAXQSIZE)%MAXQSIZE; return e; } void EnQueue(SqQueue *Q,QElemType e){ //插入的元素e為Q的新的隊尾元素 if((Q->rear+1)%MAXQSIZE ==Q->front) exit(1); Q->base[Q->rear]=e; Q->rear=(Q->rear+1
)%MAXQSIZE; } void DeQueue(SqQueue *Q){ //若佇列不空,則刪除Q的隊頭元素,用e返回其值 if(Q->front==Q->rear) exit(1); //e=Q.base[Q.front]; Q->front=(Q->front+1)%MAXQSIZE; } QElemType GetHead(SqQueue *Q){ //返回隊頭元素 return Q->base[Q->front]; } int main(){ int N,n,c; QElemType t,x; SqQueue f,*Q; Q=&f; InitQueue(Q); printf
("請輸入楊輝三角規模:\n"); scanf("%d",&N); EnQueue(Q,1); for(n=2;n<=N;n++){ EnQueue(Q,1); for(c=1;c<=n-2;c++){ t=GetHead(Q); DeQueue(Q); printf("%4d",t); x=GetHead(Q); t=t+x; EnQueue(Q,t); } EnQueue(Q,1); printf("%4d",GetHead(Q)); DeQueue(Q); printf("\n"); } while(Q->front!=Q->rear){ printf("%4d",GetHead(Q)); DeQueue(Q); } return 0; }

這裡寫圖片描述