用C语言用队列实现杨辉三角的打印输出
时间: 2023-10-12 11:05:10 浏览: 113
以下是使用队列实现杨辉三角的打印输出的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义队列结构体
struct Queue {
int *data; // 存放队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
int size; // 队列大小
};
// 初始化队列
void initQueue(struct Queue *q, int size) {
q->data = (int*) malloc(sizeof(int) * size);
q->front = q->rear = 0;
q->size = size;
}
// 判断队列是否为空
int isEmpty(struct Queue *q) {
return q->front == q->rear;
}
// 入队
void enQueue(struct Queue *q, int x) {
if ((q->rear + 1) % q->size == q->front) {
printf("Queue is full!\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % q->size;
}
// 出队
int deQueue(struct Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty!\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % q->size;
return x;
}
// 打印杨辉三角
void printYangHuiTriangle(int n) {
struct Queue q;
initQueue(&q, n); // 初始化队列,队列大小为n
// 第一行
enQueue(&q, 1);
printf("%d\n", 1);
// 后面的行
for (int i = 2; i <= n; ++i) {
int pre = 0; // 前一个数
for (int j = 1; j <= i; ++j) {
int x = deQueue(&q); // 出队
int cur = pre + x; // 当前数
enQueue(&q, cur); // 入队
printf("%d ", cur);
pre = x;
}
printf("\n");
}
}
int main() {
int n = 6;
printYangHuiTriangle(n);
return 0;
}
```
代码中使用了一个结构体来表示队列,实现了队列的初始化、判空、入队、出队等基本操作。在打印杨辉三角时,先将第一行的1入队并输出,然后从第二行开始,每一行都由前一行计算得出,使用队列来存储前一行的所有元素,从队列中出队两个元素相加得到当前元素,并将当前元素入队并输出。
阅读全文