源代码
typedef struct qnode
{ ElemType data;
struct qnode *next;
} LinkedQueueNode ;
typedef struct
{ LinkedQueueNode *front;
LinkedQueueNode *rear;
}LQueue;
void QueueInitiate(LQueue *Q)
{
Q->rear = NULL;
Q->front= NULL;
}
int QueueAppend(LQueue *Q, ElemType x)
{ LinkedQueueNode *p;
if((p = (LinkedQueueNode *)malloc(sizeof(LinkedQueueNode )) == NULL)
{ printf("内存空间不足!");
return 0;
}
p->data = x; p->next = NULL;
if(Q->rear != NULL) p->next = Q->rear ;
Q->rear = p;
if(Q->front == NULL) Q->front = p;
return 1;
}
int QueueDelete(LQueue *Q, ElemType *d)
{
LinkedQueueNode *p;
if(Q->front == NULL)
{ printf("队列已空无数据元素出队列! \n");return 0;}
else {
*d = Q->front->data; p = Q->front;
Q->front = Q->front->next;
if(Q->front == NULL) Q->rear = NULL;
free(p);
return 1;
}
}