c语言利用链队列结构或循环队列结构完成打印输出杨辉三角形的前7行。(杨辉三角形每行可以左对齐)
时间: 2024-10-12 15:13:31 浏览: 40
在C语言中,我们可以使用链队列结构或循环队列结构来构建并打印杨辉三角形。这里我们以循环队列为例,因为它的操作更直接,插入和删除元素更高效。首先,我们需要创建一个结构体表示节点,并维护两个指针用于队首和队尾。
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int value;
struct Node *next;
} Node;
Node* createNode(int val) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->value = val;
newNode->next = NULL;
return newNode;
}
void enqueue(Node** queue, int val) {
Node* newNode = createNode(val);
if (*queue == NULL) {
*queue = newNode;
(*queue)->next = (*queue);
} else {
Node* last = *queue;
newNode->next = *queue;
*queue = newNode;
last->next = newNode;
}
}
void printTriangle(int n) {
Node* queue = NULL;
for (int i = 0; i <= n; ++i) {
for (int j = 0; j <= n - i; ++j) {
if (j > 0) {
enqueue(&queue, 0); // 填充空位
}
printf("%d ", queue->value); // 打印当前节点值
}
printf("\n");
Node* temp = queue;
while (temp != queue->next) { // 移除已打印节点
Node* nextTemp = temp->next;
free(temp);
temp = nextTemp;
}
queue = queue->next; // 更新队首
}
}
int main() {
printTriangle(7);
return 0;
}
```
这段代码首先定义了一个循环队列结构`Node`,然后实现了入队`enqueue`和打印杨辉三角形的函数`printTriangle`。在`main`函数中调用`printTriangle(7)`即可打印出前7行的杨辉三角形。
阅读全文