博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构-----循环队列
阅读量:3916 次
发布时间:2019-05-23

本文共 1044 字,大约阅读时间需要 3 分钟。

循环队列类型模块说明:

// ----- 循环队列——队列的顺序存储结构 -----# define MAXQSIZE 100		// 最大队列长度typedef struct {	QElemType *base;		// 	初始化的动态分配存储空间	int front;				// 	头指针,若队列不空,指向队列头元素	int rear;				// 	尾指针,若队列不空,指向队列尾元素的下一个元素} SqQueue;// ----- 循环队列的基本操作的算法描述 -----Status InitQueue (SqQueue &Q) {	// 构造一个空队列Q	Q.base = (QElemType *) malloc (MAXQSIZE * sizeof (QElemType));	if (!Q.base) exit (OVERFLOW);	// 存储分配失败	Q.front = Q.rear = 0;	return OK;}int QueueLength (SqQueue Q) {	// 返回Q的元素个数,即队列的长度	return (Q.rear - Q.front + MAXQSIZE) % MAXQSIZE;}Status EnQueue (SqQueue &Q, QElemType e) {	// 插入元素e为Q的新的队尾元素	if ((Q.rear + 1) % MAXQSIZE == Q.front) return ERROR;	// 队列满	Q.base[Q.rear] = e;	Q.rear = (Q.rear + 1) % MAXQSIZE;	return OK;}Status DeQueue (SqQueue &Q, QElemType &e) {	// 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR	if (Q.front == Q.rear) return ERROR;	e = Q.base[Q.front];	Q.front = (Q.front + 1) % MAXQSIZE;	return OK;}

由于只凭等式 Q.front = Q.rear 无法判断队列空间是"空“还是“满”,因此,少用一个元素空间,约定以“对队列头指针在队列尾指针的下一位置(指环状的下一位置)上”作为队列呈“满”状态的标志。

循环队列需要为它设定一个最大队列长度,若用户无法预估所用队列的最大长度,则宜采用链队列。


转载地址:http://ttvrn.baihongyu.com/

你可能感兴趣的文章
Abp小试牛刀之 图片上传
查看>>
使用Select.HtmlToPdf 把html内容生成pdf文件
查看>>
叮咚!你有一份来自明源云的圣诞邀约
查看>>
如何在 ASP.NET Core 中使用 URL Rewriting 中间件
查看>>
怎样使用C# 获取WIFI的连接状态?
查看>>
生态和能力是国内自研操作系统发展的关键
查看>>
轻量级消息队列RedisQueue
查看>>
2020,你收获了什么?又失去了什么?
查看>>
龙芯.NET正式发布 稳步推进生态建设
查看>>
MiniProfiler,一个.NET简单但有效的微型分析器
查看>>
如何解决在ASP.NET Core中找不到图像时设置默认图像
查看>>
.NET Core AWS S3云存储
查看>>
代码质量在「内卷时代」的重要性
查看>>
对 Redis 中的有序集合SortedSet的理解
查看>>
如何使用 C# 在异步代码中处理异常
查看>>
.Net Conf 2020 之回顾
查看>>
如何在 C# 中使用 投影(Projection)
查看>>
利用 C# 中的 FileSystemWatcher 制作一个文件夹监控小工具
查看>>
在 xunit 测试项目中使用依赖注入
查看>>
刚转Java?那准备转回.NET5吧!
查看>>