```c++
#include
#include
#include
using namespace std;
template<class ElemType>
struct Node
{
ElemType data;//数据
struct Node* next;//后继指针
};
template<class ElemType>
class Queue
{
public:
Node* tail;//尾指针
public:
Queue();
bool InQueue(ElemType x);
bool OutQueue();
bool GetHead();
};
template<class ElemType>
Queue::Queue()
{
Queue* queue = new Queue;
//malloc(sizeof(Queue));
Node* node = new Node;
//malloc(sizeof(Node));
queue->tail = node;
queue->tail->nex = queue->tail;//指向自己
return queue;
}
template<class ElemType>
bool Queue::InQueue(ElemType x)
{
Node* p = new Node;
//malloc(sizeof(Node));
p->data = x;
p->next = this->tail->next;
this->tail->next = p;
this->tail = p;
return true;
}
template<class ElemType>
bool Queue::OutQueue()
{
Node* node;
node = this->tail->next->next;
if (this->tail->next->next == this->tail->next)
{
cout << "队列为空" << endl;
return false;//判断为空
}
ElemType x = node->data;
if (node == this->tail)//只有一个结点
{
this->tail = this->tail->next;
this->tail->next = this->tail;
}
else
this->tail->next->next = node->next;
free(node);//清除数据
cout << "删除数据为:" << x << endl;
return true;
}
template<class ElemType>
bool Queue::GetHead()
{
Node* node;
node = this->tail->next->next;
if (this->tail->next->next == this->tail->next)
{
cout << "队列为空" << endl;
return false;//判断为空
}
ElemType x = node->data;
cout << "队头数据为" << x << endl;
return true;
}
int main()
{
Queue<int>* queue=NULL;
queue->InQueue(1);
queue->OutQueue();
queue->GetHead();
}

Queue<int>* queue=NULL;
queue->InQueue(1);
这一看就不对啊,queue等于NULL了,怎么能进行指针操作呢???不要用指针