在循环队列中,以front和length分别表示循环队列中的队头位置和队列中所含元素的个数。试完成循环队列判断队空、判断队满入队和出队函数、获取队头元素及输出的操作,在主函数中调用以上函数,完成杨辉三角的输出。
时间: 2023-05-31 07:01:24 浏览: 92
xhdl.rar_xhdl_循环队列_队列 元素 输出
以下是循环队列的实现代码:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 循环队列的最大长度
template<class T>
class Queue {
private:
T data[MAXSIZE]; // 存储队列元素的数组
int front; // 队头位置
int length; // 队列中元素的个数
public:
Queue() { // 构造函数
front = 0;
length = 0;
}
bool isEmpty() { // 判断队空
return length == 0;
}
bool isFull() { // 判断队满
return length == MAXSIZE;
}
void enqueue(T x) { // 入队
if (isFull()) {
cout << "Queue is full." << endl;
return;
}
data[(front + length) % MAXSIZE] = x; // 将元素放在队尾
length++;
}
T dequeue() { // 出队
if (isEmpty()) {
cout << "Queue is empty." << endl;
return T();
}
T x = data[front]; // 取出队头元素
front = (front + 1) % MAXSIZE; // 队头指针后移一位
length--;
return x;
}
T getFront() { // 获取队头元素
if (isEmpty()) {
cout << "Queue is empty." << endl;
return T();
}
return data[front];
}
void print() { // 输出队列中的元素
if (isEmpty()) {
cout << "Queue is empty." << endl;
return;
}
cout << "Queue: ";
for (int i = 0; i < length; i++) {
cout << data[(front + i) % MAXSIZE] << " ";
}
cout << endl;
}
};
int main() {
int n;
cout << "Input the number of rows in the Pascal's Triangle: ";
cin >> n;
Queue<int> q; // 定义一个整型的循环队列
q.enqueue(1); // 将1入队
for (int i = 1; i <= n; i++) { // 输出前n行杨辉三角
int prev = 0; // 上一行的元素
for (int j = 0; j < i; j++) {
int x = q.dequeue(); // 取出队头元素
cout << x << " ";
int y = x + prev; // 计算当前行的元素
q.enqueue(y); // 将当前行的元素入队
prev = x; // 更新上一行的元素
}
q.enqueue(1); // 将1入队
cout << endl;
}
return 0;
}
```
运行结果:
```
Input the number of rows in the Pascal's Triangle: 6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
```
阅读全文