链队
创建链队中头节点类型
typedef struct
{QNode *front;
QNode *rear;
}LiQueue;
1、初始化队列InitQueue(q)
void InitQueue(LiQueue *&q)
{
q=(LiQueue *)malloc(sizeof(LiQueue));
q->front=q->rear=null;
}
2、销毁队列DestroyQueue(q)
void DestroyQueue(LiQueue *&q)
{
QNode *p=q->front,*r;
if(p!=null)
{
r=p->next;
while(r!=null)
{
free(p);
p=r;r=p->next;
}
free(p);free(q);
}
判断队列是否为空QueueEmpty(q)
bool QueueEmpty(LiQueue *q)
{
return(q->rear==null);
}
进队enQueue(q,e)
void enQueue(LiQueue *&q,ElemType e)
{
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
p->data=e;
p->next=null;
if(q->rear==null)
q->front=q->rear=p;
else
{
q->rear->next=p;
q->rear=p;
}}
出队deQueue(q,e)
bool deQueue(LiQueue *&q,ElemType &e)
{
QNode *t;
if(q->rear==null)//队列为空
return false;
t=q->front;
if(q->rear==q->front)//队列中只有一个节点
q->front=q->rear=null;
else
q->front=q->front->next;
e=t->data;
return true;
}