C++链队列杨辉三角
时间: 2024-04-13 13:22:36 浏览: 104
杨辉三角 C++
C++链队列是一种基于链表实现的队列数据结构,它具有先进先出(FIFO)的特性。链队列使用链表来存储数据元素,并通过头指针和尾指针来标记队列的头部和尾部。
杨辉三角是一个数学上的三角形数表,它以二项式系数为元素,每个数等于它上方两数之和。杨辉三角的第n行有n个数,第n行的第k个数可以表示为C(n-1, k-1),其中C是组合数。
以下是C++链队列实现杨辉三角的示例代码:
```cpp
#include <iostream>
using namespace std;
// 定义链表节点
struct Node {
int data;
Node* next;
};
// 定义链队列
struct Queue {
Node* front;
Node* rear;
};
// 初始化队列
void initQueue(Queue& q) {
q.front = q.rear = nullptr;
}
// 判断队列是否为空
bool isEmpty(Queue& q) {
return q.front == nullptr;
}
// 入队操作
void enqueue(Queue& q, int value) {
Node* newNode = new Node;
newNode->data = value;
newNode->next = nullptr;
if (isEmpty(q)) {
q.front = q.rear = newNode;
} else {
q.rear->next = newNode;
q.rear = newNode;
}
}
// 出队操作
int dequeue(Queue& q) {
if (isEmpty(q)) {
cout << "Queue is empty! << endl;
return -1;
}
Node* temp = q.front;
int value = temp->data;
q.front = q.front->next;
delete temp;
if (q.front == nullptr) {
q.rear = nullptr;
}
return value;
}
// 打印杨辉三角
void printYanghuiTriangle(int n) {
Queue q;
initQueue(q);
// 第一行
enqueue(q, 1);
for (int i = 0; i < n; i++) {
int prev = 0;
for (int j = 0; j <= i; j++) {
int curr = dequeue(q);
cout << curr << " ";
// 计算下一行的值并入队
int next = prev + curr;
enqueue(q, next);
prev = curr;
}
cout << endl;
}
}
int main() {
int n;
cout << "请输入要打印的杨辉三角的行数:";
cin >> n;
printYanghuiTriangle(n);
return 0;
}
```
阅读全文