using namespace std;
template
class Data
{
friend class LinkedListQueue;
friend class ArrayQueue;
private:
T v;
Data
public :
Data( T n )
{
v = n;
next = NULL;
}
};
template
class Queue{
private:
T nullv;
public:
Queue( T Va )
{
nullv = Va;
}
virtual T poll()=0; //返回第一个值
virtual bool offer(T value)=0; //插入
};
template
class LinkedListQueue : public Queue
{
private:
Data
Data
public:
LinkedListQueue()
{
}
T poll()
{
Date
if( front )
{
temp=front;
T data=temp->v;
front=front->next;
delete temp;
return data;
}
else return nullv;
}
bool offer(T value)
{
Data
Data
if( nullv == value )return false;
if(temp == NULL)
{
front=rear=op;
return true;
}
while(temp)
{
if(temp->v == value)
return false;
}
rear->next = temp;
rear = temp;
return true;
}
};
template
class ArrayQueue : public Queue
{
private:
T* list;
int Maxsize;
int top;
public:
T poll()
{
if(!isempty())
{
return list[top];
}
else return NULL;
}
bool offer(T rop)
{
if(!isfull())
{
list[++top]=rop;
return true;
}
else return false;
}
bool isEmpty() //是否为空
{
if(top==-1)return true;
return false;
}
bool deFront(T &item) //返回顶端元素并删除
{
if(!isempty())
{
item= list[top--];return true;
}
else return false;
}
bool isfull()//是否满
{
if(top>=Maxsize)
return true;
return false;
}
virtual ~Stack()
{ delete []list;
}
};
e:\专业\test\test4\myqueue.h(79): error C2989: “LinkedListQueue”: 类 模板 已经声明为非类 模板
1> e:\专业\test\test4\myqueue.h(7) : 参见“LinkedListQueue”的声明
1>e:\专业\test\test4\myqueue.h(35): error C3857: “LinkedListQueue”: 不允许使用多个 模板 参数列表
1>e:\专业\test\test4\myqueue.h(131): error C2989: “ArrayQueue”: 类 模板 已经声明为非类 模板
1> e:\专业\test\test4\myqueue.h(8) : 参见“ArrayQueue”的声明
1>e:\专业\test\test4\myqueue.h(82): error C3857: “ArrayQueue”: 不允许使用多个 模板 参数列表
1>e:\专业\test\test4\main.cpp(13): error C2512: “LinkedListQueue”: 没有合适的默认构造函数可用