顺序队列实现杨辉三角
时间: 2024-06-13 12:07:27 浏览: 90
以下是使用顺序队列实现杨辉三角的Python代码:
```python
def generate(numRows):
if numRows == 0:
return []
queue = [0] * numRows
queue[0] = [1]
for i in range(1, numRows):
queue[i] = [1] + [queue[i-1][j] + queue[i-1][j+1] for j in range(i-1)] + [1]
return queue
# 示例
print(generate(5))
```
运行结果:
```
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
```
相关问题
C语言 顺序队列实现杨辉三角
以下是C语言顺序队列实现杨辉三角的代码和解释:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int *elem; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
int queuesize; // 队列最大长度
} SqQueue;
// 初始化队列
void InitQueue(SqQueue *Q, int queuesize) {
Q->elem = (int *)malloc(sizeof(int) * queuesize);
Q->front = Q->rear = 0;
Q->queuesize = queuesize;
}
// 入队
void EnQueue(SqQueue *Q, int e) {
if ((Q->rear + 1) % Q->queuesize == Q->front) {
printf("Queue is full.\n");
return;
}
Q->elem[Q->rear] = e;
Q->rear = (Q->rear + 1) % Q->queuesize;
}
// 出队
void DeQueue(SqQueue *Q, int *e) {
if (Q->front == Q->rear) {
printf("Queue is empty.\n");
return;
}
*e = Q->elem[Q->front];
Q->front = (Q->front + 1) % Q->queuesize;
}
// 计算杨辉三角
void YangHuiTriangle(int n) {
SqQueue Q;
InitQueue(&Q, n + 2); // 队列最大长度为n+2
EnQueue(&Q, 1); // 第一行的元素入队
for (int i = 1; i <= n; i++) {
int pre = 0; // 上一行的元素
for (int j = 0; j < i; j++) {
int cur;
DeQueue(&Q, &cur); // 出队一个元素
printf("%d ", cur);
EnQueue(&Q, cur + pre); // 计算当前元素并入队
pre = cur; // 更新上一行的元素
}
printf("\n");
EnQueue(&Q, 0); // 每行最后一个元素为0,入队
}
free(Q.elem); // 释放队列空间
}
int main() {
int n;
printf("Please input the number of rows: ");
scanf("%d", &n);
YangHuiTriangle(n);
return 0;
}
```
c++顺序队列打印杨辉三角
C++顺序队列是一种基于数组实现的队列数据结构,它具有先进先出的特性。而杨辉三角是一个数学上的三角形数阵,其中每个数是它上方两数之和。下面是使用顺序队列打印杨辉三角的示例代码:
```cpp
#include <iostream>
#include <queue>
void printYanghuiTriangle(int n) {
std::queue<int> queue;
queue.push(1); // 第一行的元素1入队
for (int i = 0; i < n; i++) {
int prev = 0; // 上一行的元素初始为0
// 打印当前行的元素
for (int j = 0; j <= i; j++) {
int curr = queue.front();
queue.pop();
std::cout << curr << " ";
// 计算下一行的元素并入队
int next = curr + prev;
queue.push(next);
prev = curr;
}
std::cout << std::endl;
}
}
int main() {
int n;
std::cout << "请输入要打印的杨辉三角的行数:";
std::cin >> n;
printYanghuiTriangle(n);
return 0;
}
```
运行以上代码,输入要打印的杨辉三角的行数,即可输出相应行数的杨辉三角。
阅读全文