利用队列实现打印输出制定行数的杨辉等腰三角形 c语言具体代码
时间: 2024-10-14 13:18:11 浏览: 53
利用队列数据结构可以有效地构建杨辉三角形,并打印出指定行数。下面是C语言的一个简单实现,使用了循环和动态数组来模拟队列:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 100 // 定义队列的最大容量
// 队列节点结构体
typedef struct {
int value;
int index; // 当前元素在原数组中的索引
} QueueNode;
// 队列操作函数
void enqueue(QueueNode* queue, int value, int index);
int dequeue(QueueNode* queue);
// 打印三角形
void printTriangle(int n) {
int arr[MAX_QUEUE_SIZE]; // 动态数组用于存储队列
QueueNode queue[MAX_QUEUE_SIZE];
int top = -1; // 队列顶指针
for (int i = 0; i <= n; i++) {
if (i > 0) {
enqueue(&queue, arr[top], i); // 先将上一行入队
}
for (int j = 0; j <= i; j++) {
printf("%d ", arr[j]); // 输出当前行
if (j == i) {
printf("\n"); // 行结束换行
} else {
enqueue(&queue, arr[j + 1], i + 1); // 将下一行的第一个元素入队
}
}
top++;
}
}
// 队列操作函数
void enqueue(QueueNode* queue, int value, int index) {
if (top >= MAX_QUEUE_SIZE - 1) {
printf("Error: Queue is full!\n");
return;
}
queue[++top].value = value;
queue[top].index = index;
}
int dequeue(QueueNode* queue) {
if (top == -1) {
printf("Error: Queue is empty!\n");
return -1;
}
int ret = queue[top].value;
queue[top] = queue[MAX_QUEUE_SIZE - 1]; // 移除最后一个元素
top--;
return ret;
}
int main() {
int rows;
printf("Enter the number of rows for the Pascal's triangle: ");
scanf("%d", &rows);
if (rows < 0) {
printf("Invalid input! Rows must be non-negative.\n");
return 1;
}
printTriangle(rows);
return 0;
}
```
阅读全文