65,211
社区成员
发帖
与我相关
我的任务
分享
#include <iostream.h>
#include <string.h>
using namespace std;
template <class T>
class Queue
{
unsigned int size;
T *front;
unsigned int use_count;
public:
Queue(int s = 10):size(s>10 ? s : 10),front(new T[size]),use_count(0){}
inline T& operator [](const unsigned int index)const{ return *(front+index); }
~Queue() { delete [] front; }
bool EnQueue(T x);
bool DeQueue(T* x = NULL);
inline bool empty(){ return use_count == 0; }//判断是否空
inline bool full(){ return use_count == size; }//判断是否满
void Print();
};
template <class T>
void Queue <T>::Print()
{
for(T* iter = front; iter != front+use_count; ++iter)
cout << *iter <<" ";
if(!empty())
cout << endl;
}
template <class T>
bool Queue <T>::EnQueue(const T x) //入队
{
if (full())//队列满
return false;
*(front+use_count) = x; //改写原有元素
++use_count;
return true;
}
template <class T>
bool Queue <T>::DeQueue(T* x = NULL) //出队
{
if(empty()) //队列空
return false;
if(x != NULL)
*x = *front;
--use_count;
for(T* iter = front; iter != front+use_count; ++iter)
*iter = *(iter+1);
return true;
}
class student
{
unsigned int id;
char name[12];
public:
student(int i,const char *nm):id(i){ strcpy(name,nm); }
friend ostream& operator <<(ostream&,const student&);
};
ostream& operator <<(ostream &os,const student &p)
{
cout << p.id <<',' <<p.name <<" ";
return os;
}
void main()
{
}