杨辉三角(指针版)
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define MAXQSIZE 200
typedef struct {
int *base;
int front;
int rear;
}Queue;
//初始化队列
void initQueue(Queue &Q){
Q.base=(int *)malloc(MAXQSIZE*sizeof(int));
Q.front=Q.rear=0;
}
//队列长度
int length(Queue &Q){
return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
//入队列
void inQueue(Queue &Q,int e){
if((Q.rear+1)%MAXQSIZE ==Q.front) exit(1);//队列满了
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
}
//出队列
void outQueue(Queue &Q,int &e){
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
}
int getHead(Queue &Q){
return Q.base[Q.front];
}
int main(){
int N,n,c,i;
int t,x;
Queue f,Q;
initQueue(Q);
printf("请输入要打印的杨辉三角的行数:");
scanf("%d",&N);
inQueue(Q,1);
for(n=2;n<=N;n++){
inQueue(Q,1);
for(c=1;c<=n-2;c++){
t=getHead(Q);
outQueue(Q,t);
printf("%6d",t);
x=getHead(Q);
t=t+x;
inQueue(Q,t);
}
inQueue(Q,1);
printf("%6d",getHead(Q));
outQueue(Q,t);
printf("\n");
}
while(Q.front!=Q.rear){
printf("%6d",getHead(Q));
outQueue(Q,t);
}
printf("\n");
return 0;
}