队列杨辉三角c语言程序
时间: 2023-07-28 18:06:51 浏览: 92
下面是一个使用队列实现杨辉三角的 C 语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
int isEmpty(Queue *q) {
return q->front == q->rear;
}
int isFull(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
void enqueue(Queue *q, int value) {
if (isFull(q)) {
printf("Queue is full.\n");
exit(1);
}
q->data[q->rear] = value;
q->rear = (q->rear + 1) % MAX_SIZE;
}
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
exit(1);
}
int value = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return value;
}
void printYangHuiTriangle(int n) {
Queue q;
initQueue(&q);
enqueue(&q, 1);
for (int i = 1; i <= n; i++) {
int prev = 0;
for (int j = 0; j < i; j++) {
int curr = dequeue(&q);
printf("%d ", curr + prev);
prev = curr;
if (!isEmpty(&q)) {
curr = dequeue(&q);
enqueue(&q, curr + prev);
prev = curr;
}
enqueue(&q, curr);
}
printf("\n");
enqueue(&q, 0);
}
}
int main() {
int n;
printf("Enter the number of rows: ");
scanf("%d", &n);
printYangHuiTriangle(n);
return 0;
}
```
在上面的程序中,我们使用一个队列来存储每一行的数字。我们首先将数字 1 入队,然后对于每一行,我们使用一个变量 prev 来存储上一行的数字,然后依次从队列中取出两个数字,计算它们的和,并将结果入队。最后,我们将数字 0 入队,以表示当前行结束。
阅读全文