c++初学者,求大神帮助,万分感谢!!有兴趣的帮忙写写啊!!!跪求 20

 我来答
匿名用户
2014-12-18
展开全部

#include "stdafx.h"


const int MaxQSize = 50; //队列元素最大个数

//类的声明
template <class T>
class Queue
{
private:
int front, rear, count; //队头指针、队尾指针、元素个数
T qlist[MaxQSize]; //队列元素数组

public:
Queue(void); //构造函数,初始化队头指针、队尾指针、元素个数
void QInsert(const int & item); //新元素入队
int QDelete(void); //元素出队
void ClearQueue(void); //清空队列
void print()const;
int QFront(void) const; //访问队首元素

// 测试队列状态
int QLength(void) const; //求队列长度(元素个数)
int QEmpty(void) const; //判队队列空否
int QFull(void) const; //判断队列满否

friend ostream&operator <<<>(ostream&out, const  Queue<T> &s);
};
template<class T>
void Queue<T>::print()const{
int i =front;
if (front == rear){
cout << "空队列!" << endl; exit(-1);
}
while (i != rear){
cout << qlist[i] << " ";
i = (i + 1) % MaxQSize;
}cout << endl;
}
////重载<<
template <class T>
ostream&operator <<<>(ostream&out, const  Queue<T> &s){
int i = s.front;
if (s.front == s.rear){
out << "空队列!" << endl;
return  out;
}
while (i != s.rear){
out << s.qlist[i] << " ";
i = (i + 1) % MaxQSize;
}out << endl;

return  out;
}
// 构造函数,初始化队头指针、队尾指针、元素个数
template <class T>
Queue<T>::Queue(void) : front(0), rear(0), count(0)
{}

template <class T>
void Queue<T>::QInsert(const int & item) //向队尾插入元素(入队)
{
if (count == MaxQSize) // 如果队满,中止程序
{
cout << "Queue overflow!" << endl;
exit(1);
}
count++; //元素个数增1
qlist[rear] = item; //向队尾插入元素
rear = (rear + 1) % MaxQSize; //队尾指针增1,用取余运算实现循环队列
}

template <class T>
int Queue<T>::QDelete(void) //删除队首元素,并返回该元素的值(出队)
{
int 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>
int 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

// #include "queue.h"
void main(){
Queue<int> q;

for (int i = 0; i < 5; i++)
{
q.QInsert(2 * i);
q.QInsert(i * 2 + 1);
}
q.print();
cout << q;
cout<<q.QFull()<<endl;
cout << q.QFront()<<endl;
cout << q.QLength()<<endl;
cout << q.QDelete() << endl; cout << q;
cout << q.QLength() << endl;
cout << q.QEmpty()<<endl;
q.ClearQueue(); cout << q;
}
peng好孩子
2014-12-18 · TA获得超过124个赞
知道答主
回答量:132
采纳率:0%
帮助的人:60.9万
展开全部
//队列类模板的设计与实现
#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
更多追问追答
追问
不对吧
追答
你运行一下不就知道咯
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
17号木樨
2014-12-18
知道答主
回答量:50
采纳率:0%
帮助的人:8万
展开全部
你是哪个院的啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式