#include <iostream> using namespace std; #define SQQUEUE_MAX_LEN 10000 // 队列最大长度 typedef int ElemType; struct SqQueue { ElemType data[SQQUEUE_MAX_LEN]; int front = -1; // 指向队头的前一个 int rear = -1; // 指向队尾的那一个 int len = 0; }; // 初始化操作在结构体定义时操作,不再另写函数 int EnterQueue(SqQueue &Q, ElemType x) // 入队 { if ((Q.rear == Q.front) && Q.len == SQQUEUE_MAX_LEN) { return 1; // 队满 } Q.rear = (Q.rear + 1) % SQQUEUE_MAX_LEN; Q.data[Q.rear] = x; Q.len++; return 0; } int OutQueue(SqQueue &Q, ElemType &x) // 出队 { if ((Q.front == Q.rear) && Q.len == 0) { return 1; // 队空 } Q.front = (Q.front + 1) % SQQUEUE_MAX_LEN; x = Q.data[Q.front]; Q.len--; return 0; } int main() { SqQueue Q; int n, l, r; cout << "请输入杨辉三角形的行数n: "; cin >> n; if (n<1) { return 0; } EnterQueue(Q, 0); EnterQueue(Q, 1); EnterQueue(Q, 0); cout<<"1 "<<endl;//输出第一行 if (n<=1) { return 0; } for (int i = 2; i <= n; i++) // i--行号 { EnterQueue(Q, 0); // 下一行最前面的0 OutQueue(Q, l); // 取本行第一个0 for (int j = 1; j <= i; j++) // 第i行有i个数 { OutQueue(Q, r); cout << l + r <<" "; EnterQueue(Q, l + r); l = r; } EnterQueue(Q, 0); // 下一行最后面的0 cout << endl; } return 0; }写注释
时间: 2024-02-14 12:10:50 浏览: 54
这段代码是一个利用队列实现的杨辉三角形输出程序。下面是对代码的注释:
```c++
#include <iostream>
using namespace std;
#define SQQUEUE_MAX_LEN 10000 // 队列最大长度
typedef int ElemType;
struct SqQueue {
ElemType data[SQQUEUE_MAX_LEN]; // 队列的数据
int front = -1; // 指向队头的前一个
int rear = -1; // 指向队尾的那一个
int len = 0; // 队列中元素的个数
};
// 初始化操作在结构体定义时操作,不再另写函数
// 入队操作
int EnterQueue(SqQueue &Q, ElemType x) {
if ((Q.rear == Q.front) && Q.len == SQQUEUE_MAX_LEN) {
return 1; // 队满
}
Q.rear = (Q.rear + 1) % SQQUEUE_MAX_LEN; // 指向下一个位置
Q.data[Q.rear] = x; // 将元素放入队列中
Q.len++; // 队列中元素个数加一
return 0;
}
// 出队操作
int OutQueue(SqQueue &Q, ElemType &x) {
if ((Q.front == Q.rear) && Q.len == 0) {
return 1; // 队空
}
Q.front = (Q.front + 1) % SQQUEUE_MAX_LEN; // 指向下一个位置
x = Q.data[Q.front]; // 取出队列中的元素
Q.len--; // 队列中元素个数减一
return 0;
}
int main() {
SqQueue Q; // 定义一个队列
int n, l, r; // n为杨辉三角形的行数,l和r为队列中的两个元素
cout << "请输入杨辉三角形的行数n: ";
cin >> n;
if (n<1) {
return 0; // 输入的行数不合法
}
EnterQueue(Q, 0); // 队列中插入一个0
EnterQueue(Q, 1); // 队列中插入一个1
EnterQueue(Q, 0); // 队列中插入一个0
cout<<"1 "<<endl; // 输出第一行
if (n<=1) {
return 0; // 只输出了一行
}
for (int i = 2; i <= n; i++) // i--行号
{
EnterQueue(Q, 0); // 下一行最前面的0
OutQueue(Q, l); // 取本行第一个0
for (int j = 1; j <= i; j++) // 第i行有i个数
{
OutQueue(Q, r); // 取出队列中的元素
cout << l + r <<" "; // 输出本行的每个元素
EnterQueue(Q, l + r); // 将计算得到的元素入队
l = r; // 更新l和r的值
}
EnterQueue(Q, 0); // 下一行最后面的0
cout << endl; // 输出换行符
}
return 0;
}
```
阅读全文