#include "stdio.h"
#include"malloc.h"
#include"stdlib.h"
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define maxsize 100
typedef int QElemType;
typedef int Status;
/******************struct****************/
typedef struct{
QElemType *base;
int front;
int rear;
}SqQueue;
/*****************init*******************/
Status InitQueue_Sq(SqQueue *Q){
Q->base=(QElemType *)malloc(maxsize*sizeof(QElemType));
if(!Q->base)exit(OVERFLOW);
Q->front=Q->rear=0;
return OK;
}
/****************enqueue*****************/
Status EnQueue_Sq(SqQueue *Q,QElemType e){
if((Q->rear+1)%maxsize==Q->front)exit(0);
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%maxsize;
return OK;
}
/****************dequeue*****************/
Status DeQueue_Sq(SqQueue *Q,QElemType *e){
if(Q->rear==Q->front)exit(0);
*e=Q->base[Q->front];
Q->front=(Q->front+1)%maxsize;
return OK;
}
Status GetFront(SqQueue Q,QElemType *e){
if(Q.rear==Q.front)exit(0);
*e=Q.base[Q.front];
return OK;
}
/****************Qlength*****************/
int QueueLength(SqQueue Q){
return ((Q.rear-Q.front+maxsize)%maxsize);
}
int main(){
int i,j,q,a,n,x,z;
SqQueue Q1;
if(InitQueue_Sq(&Q1)==OK)printf("Init is ok!\n");
q=1;
printf("please enter a value for n.\n");
scanf("%d",&n);
EnQueue_Sq(&Q1,q);
EnQueue_Sq(&Q1,q);
for(z=1;z<=n-1;z++)printf(" ");
printf("%d\n",q);
for(z=1;z<=n-2;z++)printf(" ");
printf("%d%8d\n",q,q);
for(i=3;i<=n;i++){
for(z=1;z<=n-i;z++)printf(" ");
printf("%d",1);
for(j=1;j<i-1;j++){
DeQueue_Sq(&Q1,&q);
GetFront(Q1,&a);
x=q+a;
printf("%8d",x);
EnQueue_Sq(&Q1,x);
}
printf("%8d\n",1);
q=1;
EnQueue_Sq(&Q1,q);
}
system("pause");
return 0;
}