C语言用队列实现杨辉三角
时间: 2024-10-14 17:18:35 浏览: 55
在C语言中,我们可以使用数组来模拟队列,并通过动态内存分配以及循环结构来实现杨辉三角。杨辉三角是一个数学术语,它表示的是一个由数字组成的三角形,每一行都是前一行的数字之和,第一行和第二行只包含一个数字。
以下是一个简单的示例,展示了如何用C语言实现杨辉三角的队列生成:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} QueueNode;
// 队列结构体及基本操作
QueueNode* create_queue() {
return (QueueNode*)malloc(sizeof(QueueNode));
}
void enqueue(QueueNode** head, int value) {
QueueNode* newNode = create_queue();
newNode->data = value;
newNode->next = *head;
*head = newNode;
}
int dequeue(QueueNode** head) {
if (*head == NULL) {
printf("Queue is empty.\n");
return -1;
}
int value = (*head)->data;
QueueNode* temp = *head;
*head = (*head)->next;
free(temp);
return value;
}
void print_triangle(int n) {
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= i; j++) {
printf("%d ", enqueue(&queue_head, i > 0 ? triangle[j] : 1));
}
printf("\n");
}
}
int main() {
QueueNode* queue_head = create_queue(); // 初始化队列头部
int n = 5; // 指定杨辉三角的大小
int triangle[n][n]; // 存储三角形数值
// 填充杨辉三角的值
for (int i = 0; i < n; i++) {
triangle[i][0] = 1;
triangle[i][i] = 1;
}
// 计算并打印三角形
for (int i = 1; i < n; i++) {
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
print_triangle(i);
}
return 0;
}
```
在这个例子中,我们使用了队列来存储当前行的数字,每次计算完一行后,就将结果加入队列,然后从队列里读取元素来打印杨辉三角。注意,这个程序假设了队列内部实现了先进先出(FIFO)的原则,所以数据会按照添加的顺序输出。
阅读全文