链式队列

链式队列

链式队列的抽象数据类型,链式队列数据结构实现代码:

链式队列,front头指针,rear尾指针,QNode为单个元素结点

[cpp]
struct QNode
{
ElemType data;
QNode *next;
};
struct Queue
{
QNode front;
QNode rear;
};
void Init(Queue &Q)
{
Q.front=Q.rear=new QNode;//头结点
Q.front->next=NULL;
}
void Destory(Queue &Q)
{
while(Q.front)
{
Q.rear=Q.front->next;
delete Q.front;
Q.front=Q.rear;
}
}
void Insert(Queue &Q,ElemType t)
{
QNode *p=new QNode;
p->data=t;p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
bool Delete(Queue &Q,ElemType &t)
{
QNode p;
if(Q.front==Q.rear) return false;
p=Q.front->next;
t=p->data;
Q.front->next=p->next;
if(Q.rear==p) Q.rear=Q.front;
//如果队列中最后一个元素被删除,队尾指针消失
//需要从新对队尾指针赋值
delete p;return true;
}

[/cpp]