⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linkqueue.c

📁 杨辉三角,安装好 Dev-C++ 后
💻 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 + -