请用c语言利用队列写出打印杨辉三角形的前行的程序
时间: 2024-05-08 19:18:32 浏览: 115
C语言利用队列打印杨辉三角
以下是用C语言利用队列打印杨辉三角形的前行的程序:
```
#include <stdio.h>
#define MAXSIZE 100
typedef struct{
int data[MAXSIZE];
int front;
int rear;
}Queue;
void initQueue(Queue *q){
q->front = q->rear = 0;
}
int isEmpty(Queue *q){
return q->front == q->rear;
}
void enQueue(Queue *q, int x){
if((q->rear + 1) % MAXSIZE == q->front){
printf("Queue is full!\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
}
int deQueue(Queue *q){
if(isEmpty(q)){
printf("Queue is empty!\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return x;
}
void YangHuiTriangle(int n){
Queue q;
initQueue(&q);
enQueue(&q, 1); //第一行第一个元素是1
for(int i = 1; i <= n; i++){
int pre = 0; //上一行的元素
for(int j = 0; j < i; j++){
int x = deQueue(&q);
printf("%d ", x);
enQueue(&q, x + pre); //计算当前行的元素
pre = x; //更新上一行的元素
}
enQueue(&q, 1); //每行最后一个元素为1
printf("\n");
}
}
int main(){
int n;
printf("Please input the number of rows:\n");
scanf("%d", &n);
YangHuiTriangle(n);
return 0;
}
```
阅读全文