
队列类模板的设计与实现
队列类模板的设计与实现进行队列类模板的设计并实现,队列采用循环队列实现,数据元素可以是char,int,float等多种数据类型,包括以下功能:(1)实现初始化队列操作,...
队列类模板的设计与实现
进行队列类模板的设计并实现,队列采用循环队列实现,数据元素可以是char, int, float等多种数据类型,包括以下功能:
(1) 实现初始化队列操作,建立一个空队列;
(2) 实现清空队列操作;
(3) 实现判断队列是否为空的操作;
(4) 实现求队列长度的操作;
(5) 实现返回队首元素的操作;
(6) 实现入队操作;
(7) 实现出队操作;
(8) 实现队列的遍历操作,输出队列的每个元素。
(9) 将上述功能作为类的成员函数实现,编写主函数测试上述功能。
请将主函数也写上,谢谢 展开
进行队列类模板的设计并实现,队列采用循环队列实现,数据元素可以是char, int, float等多种数据类型,包括以下功能:
(1) 实现初始化队列操作,建立一个空队列;
(2) 实现清空队列操作;
(3) 实现判断队列是否为空的操作;
(4) 实现求队列长度的操作;
(5) 实现返回队首元素的操作;
(6) 实现入队操作;
(7) 实现出队操作;
(8) 实现队列的遍历操作,输出队列的每个元素。
(9) 将上述功能作为类的成员函数实现,编写主函数测试上述功能。
请将主函数也写上,谢谢 展开
2个回答
展开全部
这个回答很好,
我靠,既然是模板,主函数就自己写了。
我靠,既然是模板,主函数就自己写了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//队列类模板的设计与实现
#ifndef QUEUE_CLASS
#define QUEUE_CLASS
#include <iostream>
#include <cstdlib>
using namespace std;
const int MaxQSize = 50; //队列元素最大个数
//类的声明
template <class T>
class Queue
{
private:
int front, rear, count; //队头指针、队尾指针、元素个数
T qlist[MaxQSize]; //队列元素数组
public:
Queue (void); //构造函数,初始化队头指针、队尾指针、元素个数
void QInsert(const T& item); //新元素入队
T QDelete(void); //元素出队
void ClearQueue(void); //清空队列
T QFront(void) const; //访问队首元素
// 测试队列状态
int QLength(void) const; //求队列长度(元素个数)
int QEmpty(void) const; //判队队列空否
int QFull(void) const; //判断队列满否
};
// 构造函数,初始化队头指针、队尾指针、元素个数
template <class T>
Queue<T>::Queue (void) : front(0), rear(0), count(0)
{}
template <class T>
void Queue<T>::QInsert (const T& item) //向队尾插入元素(入队)
{
if (count == MaxQSize) // 如果队满,中止程序
{
std::cerr << "Queue overflow!" << endl;
exit(1);
}
count++; //元素个数增1
qlist[rear] = item; //向队尾插入元素
rear = (rear+1) % MaxQSize; //队尾指针增1,用取余运算实现循环队列
}
template <class T>
T Queue<T>::QDelete(void) //删除队首元素,并返回该元素的值(出队)
{
T temp;
if (count == 0) // 如果队空,中止程序
{
std::cerr << "Deleting from an empty queue!" << endl;
exit(1);
}
temp = qlist[front]; // 记录队首元素值
count--; // 元素个数自减
front = (front+1) % MaxQSize; //队首指针增1。取余以实现循环队列
return temp; //返回首元素值
}
template <class T>
T Queue<T>::QFront(void) const // 访问队列首元素(返回其值)
{ return qlist[front]; }
template <class T>
int Queue<T>::QLength(void) const // 返回队列元素个数
{ return count; }
template <class T>
int Queue<T>::QEmpty(void) const // 测试队空否
{ return count == 0; } //返回逻辑值 count == 0
template <class T>
int Queue<T>::QFull(void) const // 测试队满否
{ return count == MaxQSize; } // 返回逻辑值 count == MaxQSize
template <class T>
void Queue<T>::ClearQueue(void) // 清空队列
{
count = 0;
front = 0;
rear = 0;
}
#endif // QUEUE_CLASS
#ifndef QUEUE_CLASS
#define QUEUE_CLASS
#include <iostream>
#include <cstdlib>
using namespace std;
const int MaxQSize = 50; //队列元素最大个数
//类的声明
template <class T>
class Queue
{
private:
int front, rear, count; //队头指针、队尾指针、元素个数
T qlist[MaxQSize]; //队列元素数组
public:
Queue (void); //构造函数,初始化队头指针、队尾指针、元素个数
void QInsert(const T& item); //新元素入队
T QDelete(void); //元素出队
void ClearQueue(void); //清空队列
T QFront(void) const; //访问队首元素
// 测试队列状态
int QLength(void) const; //求队列长度(元素个数)
int QEmpty(void) const; //判队队列空否
int QFull(void) const; //判断队列满否
};
// 构造函数,初始化队头指针、队尾指针、元素个数
template <class T>
Queue<T>::Queue (void) : front(0), rear(0), count(0)
{}
template <class T>
void Queue<T>::QInsert (const T& item) //向队尾插入元素(入队)
{
if (count == MaxQSize) // 如果队满,中止程序
{
std::cerr << "Queue overflow!" << endl;
exit(1);
}
count++; //元素个数增1
qlist[rear] = item; //向队尾插入元素
rear = (rear+1) % MaxQSize; //队尾指针增1,用取余运算实现循环队列
}
template <class T>
T Queue<T>::QDelete(void) //删除队首元素,并返回该元素的值(出队)
{
T temp;
if (count == 0) // 如果队空,中止程序
{
std::cerr << "Deleting from an empty queue!" << endl;
exit(1);
}
temp = qlist[front]; // 记录队首元素值
count--; // 元素个数自减
front = (front+1) % MaxQSize; //队首指针增1。取余以实现循环队列
return temp; //返回首元素值
}
template <class T>
T Queue<T>::QFront(void) const // 访问队列首元素(返回其值)
{ return qlist[front]; }
template <class T>
int Queue<T>::QLength(void) const // 返回队列元素个数
{ return count; }
template <class T>
int Queue<T>::QEmpty(void) const // 测试队空否
{ return count == 0; } //返回逻辑值 count == 0
template <class T>
int Queue<T>::QFull(void) const // 测试队满否
{ return count == MaxQSize; } // 返回逻辑值 count == MaxQSize
template <class T>
void Queue<T>::ClearQueue(void) // 清空队列
{
count = 0;
front = 0;
rear = 0;
}
#endif // QUEUE_CLASS
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |