顺序循环队列的应用,杨辉三角c++
时间: 2023-07-24 22:19:51 浏览: 97
好的,下面是使用顺序循环队列实现杨辉三角的C++代码:
```c++
#include<iostream>
using namespace std;
#define MAXSIZE 100
struct SqQueue {
int data[MAXSIZE];
int front, rear;
};
void InitQueue(SqQueue& Q) {
Q.front = Q.rear = 0;
}
bool QueueEmpty(SqQueue Q) {
if (Q.front == Q.rear) {
return true;
}
else {
return false;
}
}
bool EnQueue(SqQueue& Q, int x) {
if ((Q.rear + 1) % MAXSIZE == Q.front) { //队满
return false;
}
Q.data[Q.rear] = x;
Q.rear = (Q.rear + 1) % MAXSIZE;
return true;
}
bool DeQueue(SqQueue& Q, int& x) {
if (Q.front == Q.rear) { //队空
return false;
}
x = Q.data[Q.front];
Q.front = (Q.front + 1) % MAXSIZE;
return true;
}
void YangHuiTriangle(int n) {
if (n <= 0) {
return;
}
SqQueue Q;
InitQueue(Q);
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);
cout << cur - pre << " "; //输出差值
pre = cur;
EnQueue(Q, cur + pre); //入队下一层的数
}
EnQueue(Q, 1);
cout << endl;
}
}
int main() {
int n;
cout << "请输入要打印的行数:";
cin >> n;
YangHuiTriangle(n);
return 0;
}
```
注:该代码中使用了顺序循环队列的数据结构,并且实现了队列的初始化、判空、入队、出队等操作。在杨辉三角的打印过程中,每次从队列中出队一个数,与上一层的数相减并输出,然后将此数与上一层的数相加并入队,以此构造下一层的数。
阅读全文