你需要用模板类来编写一个队列,成员函数包括无参构造(默认队列大小为10)、有参构造、析构函数、入队、出队、获得队头元素函数、打印队列元素函数。注意队列空出一个存储空间用于判断队满队空。
函数接口定义:
template<typename T>
class RQueue
void enqueue(T data)
void dequeue()
T getHeadElem()
bool isfull()
bool isempty()
void show()//队列没元素时,不打印任何
unsigned int elem_available()//返回队列元素数量rear-front
裁判测试程序样例:
#include <iostream>
using namespace std;
/* 请在这里填写答案 */
int main()
{
RQueue<float> rq;
float a;
for (int i = 0; i < 9; i++) {
cin >> a;
rq.enqueue(a);
}
rq.show();
cout << endl;
for (int i = 0; i < 6; i++)//出队6个元素
{
cout << rq.getHeadElem() << " ";
rq.dequeue();
}
cout << endl;
rq.show();
return 0;
}
输入样例:
在这里给出一组输入。例如:
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9
输出样例:
在这里给出相应的输出。例如(注意空格):
1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9
1.1 2.2 3.3 4.4 5.5 6.6
7.7 8.8 9.9
#include <iostream>
using namespace std;
/* 请在这里填写答案 */
template<typename T>
class RQueue {
private:
struct Queue {
T data;
Queue* next;
};
const int L;
unsigned int cnt;
Queue* head = nullptr, * tail, * newNode;
void create(T d = 0) {
for (int i = 0; i < L; ++i) {
newNode = new Queue;
newNode->data = d;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
}
else {
tail->next = newNode;
}
tail = newNode;
}
tail->next = head;
}
public:
RQueue(T d,const int qL=9):L(qL) {
create(d);
cnt = 1;
tail = head->next;
}
RQueue(const int qL=9):L(qL) {
create();
cnt = 0;
tail = head;
}
bool isfull() {
if (cnt > L)return true;
else return false;
}
bool isempty() {
if (cnt == 0)return true;
else return false;
}
void enqueue(T data) {
if (!isfull()) {
tail->data = data;
tail = tail->next;
cnt++;
}
}
void dequeue() {
if (!isempty()) {
head = head->next;
cnt--;
}
}
T getHeadElem() {
return head->data;
}
//队列没元素时,不打印任何
void show() {
if (!isempty()) {
newNode = head;
for (int i = 0; i < cnt; ++i) {
cout << newNode->data << " ";
newNode = newNode->next;
}
}
}
//返回队列元素数量rear-front
unsigned int elem_available() {
return cnt;
}
};
//以下部分题目给定
int main()
{
RQueue<float> rq;
float a;
for (int i = 0; i < 9; i++) {
cin >> a;
rq.enqueue(a);
}
rq.show();
cout << endl;
for (int i = 0; i < 6; i++)//出队6个元素
{
cout << rq.getHeadElem() << " ";
rq.dequeue();
}
cout << endl;
rq.show();
return 0;
}