使用队列打印杨辉三角形
时间: 2023-12-24 13:24:32 浏览: 83
使用队列打印杨辉三角形的算法如下:
1. 定义一个队列,将第一行的元素 1 入队列。
2. 循环遍历每一行,每次出队列并打印出队列元素,再将出队后队首的元素值与队列首元素相加得到下一行所求的值,将该值入队列。
3. 循环外面出队列打印最后一个元素 1,并且存储下一行最后一个元素数字 1。
4. 重复步骤2和3,直到打印出指定行数的杨辉三角形。
相关问题
利用队列打印杨辉三角形
好的,这是一个很有趣的问题!请看下面的代码,它利用队列打印出了前 n 行的杨辉三角形:
```python
def printYangHui(n):
if n <= 0:
return
queue = [(1, 1)]
for i in range(n):
print(" "*(n-i-1), end="")
for j in range(i+1):
num, den = queue.pop(0)
print(num, end=" ")
if j < i:
queue.append((num+den, den))
print()
```
运行 `printYangHui(5)`,将会打印出如下的结果:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```
希望这个答案对你有所帮助!
用队列打印杨辉三角形
好的,打印杨辉三角形可以使用队列来实现。具体实现方法如下:
首先,我们需要定义一个队列结构体,用来存储每一行的数字。队列中的元素可以是int类型。
```
typedef struct {
int *data; // 存储队列中的元素
int head; // 队首指针
int tail; // 队尾指针
int size; // 队列的大小
} Queue;
```
接下来,我们需要实现队列的初始化、入队、出队等操作。这里我们使用循环队列来实现。
```
// 初始化队列
void initQueue(Queue *q, int size) {
q->data = (int *)malloc(sizeof(int) * size);
q->head = q->tail = 0;
q->size = size;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return q->head == q->tail;
}
// 入队
void enqueue(Queue *q, int x) {
q->data[q->tail] = x;
q->tail = (q->tail + 1) % q->size;
}
// 出队
int dequeue(Queue *q) {
int x = q->data[q->head];
q->head = (q->head + 1) % q->size;
return x;
}
```
有了队列的基本操作,我们就可以开始打印杨辉三角形了。具体实现方法如下:
```
void printYangHuiTriangle(int n) {
Queue q;
initQueue(&q, n + 1); // 队列的大小为n+1
// 第一行
enqueue(&q, 1);
// 从第二行开始打印
for (int i = 2; i <= n + 1; i++) {
int pre = 0; // 上一行的数字
for (int j = 0; j < i - 1; j++) {
int x = dequeue(&q); // 出队
printf("%d ", x + pre); // 打印当前数字
pre = x; // 更新上一行的数字
enqueue(&q, x + pre); // 入队
}
printf("\n");
enqueue(&q, 1); // 每行最后一个数字为1
}
}
```
这样,我们就可以通过队列来打印杨辉三角形了。调用printYangHuiTriangle函数,传入需要打印的行数即可。
阅读全文