📄 linkqueue.c
字号:
/*
* 作者:antigloss
* 最后修改:05-9-7 18:20
* 蚂蚁的 C/C++ 标准编程
* cpp.ga-la.com
*/
#include <stdio.h>
#include <stdlib.h>
#include "../header/linkqueue.h"
/* begin of ClearQueue 05-9-7 18:00 */
void ClearQueue(LinkQueue *Q) /* 置为空队列 */
{
Qptr tmp = Q->front->next;
Q->front->next = NULL;
while (tmp) {
Q->rear = tmp->next;
free(tmp);
tmp = Q->rear;
}
Q->rear = Q->front;
} /* end of ClearQueue */
/* begin of DeQueue 05-9-7 17:40 */
int DeQueue(LinkQueue *Q) /* 出队 */
{
Qptr tmp;
if ( Q->front == Q->rear ) {
return 0; /* 如果队列已空,返回 0 */
}
tmp = Q->front->next;
Q->front->next = tmp->next;
if ( Q->rear == tmp ) { /* 如果队尾元素被删除,则队尾指针要指向头结点 */
Q->rear=Q->front;
}
free(tmp);
return 1;
} /* end of DeQueue */
/* begin of Destroy 05-9-7 17:50 */
void Destroy(LinkQueue *Q) /* 销毁队列 */
{
while (Q->front) {
Q->rear = Q->front->next;
free(Q->front);
Q->front = Q->rear;
}
} /* end of Destroy */
/* begin of EnQueue 05-9-7 17:30 */
int EnQueue(LinkQueue *Q, ElemType e) /* 插入队尾 */
{
Qptr tmp = malloc( sizeof *tmp );
if ( !tmp ) {
return 0;
}
tmp->data = e;
tmp->next = NULL;
Q->rear->next = tmp;
Q->rear = tmp;
return 1;
} /* end of EnQueue */
/* begin of GetHead 05-9-7 18:20 */
int GetHead(LinkQueue *Q, ElemType *e) /* 队列不空则返回队列头元素,并返回 1;否则返回 0 */
{
if ( Q->front == Q->rear ) {
return 0; /* 如果队列已空,返回 0 */
}
*e = Q->front->next->data;
return 1;
} /* end of GetHead */
/* begin of InitQueue 05-9-7 17:25 */
int InitQueue(LinkQueue *Q) /* 建立空队列 */
{
Q->rear = Q->front = malloc(sizeof *Q->front);
if ( !Q->front ) {
return 0;
}
Q->front->next = NULL;
return 1;
} /* end of InitQueue */
/* begin of InitQueue 05-9-7 18:10 */
int QueueEmpty(LinkQueue *Q) /* 若队列为空队列,则返回 1 ,否则返回 0 */
{
return Q->front == Q->rear;
} /* end of InitQueue */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -