用队列表达杨辉三角c语言
时间: 2023-06-03 13:03:27 浏览: 112
很高兴回答你的问题!以下是利用队列实现杨辉三角的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 20
// 定义一个队列
typedef struct {
int *data;
int head, tail, len;
} Queue;
// 初始化队列
void initQueue(Queue *q, int len) {
q->data = (int*)malloc(sizeof(int) * len);
q->head = q->tail = 0;
q->len = len;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return q->head == q->tail;
}
// 入队
void enqueue(Queue *q, int value) {
q->data[q->tail] = value;
q->tail = (q->tail + 1) % q->len;
}
// 出队
int dequeue(Queue *q) {
int value = q->data[q->head];
q->head = (q->head + 1) % q->len;
return value;
}
// 打印杨辉三角
void printTriangle(int n) {
Queue q;
initQueue(&q, MAX_N);
// 初始化第一行
enqueue(&q, 1);
for(int i = 0; i < n; i++) {
int pre = 0; // 前一个数的值
for(int j = 0; j <= i; j++) {
int cur = dequeue(&q);
printf("%d ", cur);
// 计算下一行的数据
int value = pre + cur;
// 将数据入队
enqueue(&q, value);
pre = cur;
}
// 将每一行的最后一个1入队
enqueue(&q, 1);
printf("\n");
}
free(q.data); // 释放内存
}
int main() {
int n;
printf("请输入杨辉三角的行数:");
scanf("%d", &n);
printTriangle(n);
return 0;
}
```
希望能够帮到你!
阅读全文