C语言队列实现打印杨辉三角的代码
时间: 2024-11-03 07:23:23 浏览: 13
在C语言中,我们可以使用数组和指针来实现一个简单的队列,并利用队列的特点来打印杨辉三角。杨辉三角是一个数学术语,每一行的数字是通过前一行的数字相加得到的。以下是使用队列实现的一个基本示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX 100 // 定义队列最大容量
typedef struct {
int data[MAX];
int front; // 队头
int rear; // 队尾
} Queue;
// 初始化队列
void init_queue(Queue *q) {
q-1;
}
// 判断队列是否为空
int is_empty(Queue *q) {
return (q->front == q->rear);
}
// 入队操作
void enqueue(Queue *q, int num) {
if ((q->rear + 1) % MAX != q->front) {
q->rear = (q->rear + 1) % MAX;
q->data[q->rear] = num;
} else {
printf("Queue overflow.\n");
}
}
// 出队操作
int dequeue(Queue *q) {
if (is_empty(q)) {
printf("Queue underflow.\n");
return -1;
} else {
int temp = q->data[q->front];
q->front = (q->front + 1) % MAX;
return temp;
}
}
// 打印杨辉三角
void print_pascal_triangle(Queue *q) {
int i, j;
for (i = 0; i <= MAX; ++i) {
for (j = 0; j < i; ++j) {
if (j == 0 || j == i - 1) {
enqueue(&q, 1); // 杨辉三角的第一行和最后一行都是1
} else {
enqueue(&q, q->data[dequeue(&q)] + q->data[enqueue(&q, 0)]);
}
printf("%d ", q->data[dequeue(&q)]);
}
printf("\n");
}
}
int main() {
Queue triangle_q;
init_queue(&triangle_q);
print_pascal_triangle(&triangle_q);
return 0;
}
```
这个程序首先初始化了一个队列,然后在`print_pascal_triangle`函数中通过入队和出队操作构建杨辉三角。需要注意的是,实际的队列长度是循环数组实现的,所以这里假设了队列的最大容量是固定的。
阅读全文