利用循环队列打印杨辉三角
时间: 2023-12-16 16:26:49 浏览: 98
好的,利用循环队列打印杨辉三角的方法如下:
首先,我们需要定义一个循环队列,用来存储每一行的数据。然后,我们从第一行开始,依次计算每一行的数据,并将其存储到循环队列中。最后,我们从循环队列中取出每一行的数据,并按照杨辉三角的格式进行输出。
以下是代码实现:
```
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int front, rear;
} Queue;
void InitQueue(Queue *q) {
q->front = q->rear = 0;
}
int QueueEmpty(Queue *q) {
return q->front == q->rear;
}
int QueueFull(Queue *q) {
return (q->rear + 1) % MAXSIZE == q->front;
}
void EnQueue(Queue *q, int x) {
if (QueueFull(q)) {
printf("Queue is full.\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
}
int DeQueue(Queue *q) {
if (QueueEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return x;
}
void PrintYangHuiTriangle(int n) {
Queue q;
InitQueue(&q);
EnQueue(&q, 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 + pre);
pre = x;
EnQueue(&q, x + pre);
}
printf("\n");
EnQueue(&q, 1);
}
}
int main() {
int n;
printf("Please input the number of rows: ");
scanf("%d", &n);
PrintYangHuiTriangle(n);
return 0;
}
```
以上代码中,我们定义了一个循环队列,并实现了队列的基本操作。然后,我们定义了一个函数`PrintYangHuiTriangle`,用来打印杨辉三角。在函数中,我们首先将第一行的数据1入队,然后依次计算每一行的数据,并将其存储到循环队列中。最后,我们从循环队列中取出每一行的数据,并按照杨辉三角的格式进行输出。
阅读全文