用队来计算杨辉三角
程序代码:
//输出时只有第一行的1输出了,后面输出的是一大堆奇怪的数字,求指教 #include<stdio.h> #define maxsize 100 typedef struct{int data[maxsize]; int rear; int length; }Queue,*QQueue; void init(QQueue Q) { Q->rear=0; Q->length=0; return; } void Enter(QQueue Q,int x) { if(Q->length==maxsize); return; Q->data[Q->rear]=x; Q->rear=(Q->rear+1)%maxsize; return; } int Delete(QQueue Q,int *x) { if(Q->length==0); return 0; *x=Q->data[(Q->rear-Q->length+maxsize)%maxsize]; Q->length--; return *x; } void Get(QQueue Q,int *x) { if(Q->length==0) return; *x=Q->data[(Q->rear-Q->length+maxsize)%maxsize]; } void YHTriangle() { Queue Q; int n=7; int a1,a2; int i,k; init(&Q); printf("%-3d\n",1); Enter(&Q,1); Enter(&Q,1); for(i=2;i<=n;i++) { Enter(&Q,1); for(k=0;k<=i-2;k++) { Delete(&Q,&a1); Get(&Q,&a2); printf("%-3d",a1); Enter(&Q,a1+a2); } Delete(&Q,&a2); printf("%-3d\n",a2); Enter(&Q,1); } } main() { Queue Q; YHTriangle(); }