#include <stdio.h>
typedef struct Node
{
struct Node* next;
}Node;
typedef struct QueueNode
{
Node P;
void* data;
}QueueNode;
typedef struct LinkQueue
{
int length;
QueueNode* front;
QueueNode* rear;
}LinkQueue;
void InitQueue(LinkQueue* );
int QueueEmpty(LinkQueue* );
int QueueLength(LinkQueue* );
void GetFront(LinkQueue*, void** );
void EnQueue(LinkQueue*, void* );
void DeQueue(LinkQueue*, void** );
void ClearQueue(LinkQueue* );
#include <stdio.h>
#include "LinkQueue.h"
void InitQueue(LinkQueue* lq)
{
lq->length = 0;
lq->rear = lq->front = NULL;
}
int QueueEmpty(LinkQueue* lq)
{
if(lq->length == 0)
return 1;
else
return 0;
}
int QueueLength(LinkQueue* lq)
{
return lq->length;
}
void GetFront(LinkQueue* lq, void** e)
{
if(lq->length == 0)
return;
*e = lq->front->data;
}
void EnQueue(LinkQueue* lq, void* e)
{
QueueNode* pNew = (QueueNode*)malloc(sizeof(QueueNode));
pNew->data = e;
if(lq->length == 0)
lq->front = lq->rear = pNew;
else
{
lq->rear->next = pNew;
lq->rear = pNew;
}
lq->length++;
}
void DeQueue(LinkQueue* lq, void** e)
{
if(lq->length == 0)
return;
QueueNode* pDel;
pDel = lq->front;
*e = pDel->data;
lq->front = (QueueNode*)pDel->P.next;
free(pDel);
lq->length--;
if(lq->length == 0)
lq->rear = NULL;
}
void ClearQueue(LinkQueue* lq)
{
while(lq->length)
{
void* tmp;
DeQueue(lq, (void**)&tmp);
}
}