循环列队的循序结构

2024-08-23 23:08
文章标签 结构 循环 列队 循序

本文主要是介绍循环列队的循序结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

</pre><pre name="code" class="cpp">//1.队列顺序结构的定义#define MAXQSIZE 100
typedef struct 
{QElemType base[MAXQSIZE];//静态数组int front;//队列头指针int rear;//队列尾指针
}SqQueue;//解决队列的假溢出方法
//1.将循序列队臆造为一个环状空间。尾指针指向头指针
//2.在对满的情况下,rear指针和front指针会指向同一个节点元素。
//这时候就相当于对空,因为队列为空的情况下,rear和front指针指向同一元素//循环队列怎么区分对空和对满呢???
//解决办法;//1.因出对而相等,则为空。因入队而相等,则为满
//2.少用一个元素的空间,约定rear+1=front时,就认为对满//2.循环队列,队列顺序存储结构的虚拟实现#define MAXQSIZE 100//最大列队长度
typedef struct 
{QElemType *base;//初始化的动态分配存储空间int front;//头指针,若对不空,指向队列头元素int rear;//尾指针,若队列不空,指向队尾元素的下一位置
}SqQueue;//3.基本操作Status InitQueue(SqQueue &Q)
{//构造一个空队列QQ.base=(QElemType*)malloc(//开辟队列的内存空间MAXQSIZE*sizeof(QElemType));if(!Q.base)//如果队尾不存在,那么开辟空间失败exit(OVERFLOW);Q.front=Q.rear=0;//空队列return OK;
}//4.求队列长度int QueueLength (SqQueue Q)
{//返回Q的元素个数,即队列的长度return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;//由于rear也可能小于front,所以这个方法比较实用,相当于求//rear-front的绝对值。
}//5.插入元素E为Qde 新队尾元素Status EnQueue(SqQueue &Q,QElemType e)
{if((Q.rear+1)%MAXQSIZE==Q.front)//判断是否为对满return ERROR;Q.base[Q.rear]=e;//让新插入的元素为队尾元素Q.rear=(Q.rear+1)%MAXQSIZE;//移动到下一位,如果对满,那么取余到达第一元素位置return OK;
}//6.入队和出队
//入队:rear=rear+1;入队队尾元素加一a4->a5->a6;一次增加
//出队:front=front+1  出队时队首元素加一a4->a3->a2->a1,从右到左出队//7.若队不空,则删除队头元素,用e返回其值,否则,返回ERRORStatus DeQueue(SqQueue &Q,QElemType &e)
{if(Q.front==Q.rear)//如果队列为空,返回ERRORreturn ERROR;e=Q.base[Q.front];//把队首指针赋给eQ.front=(Q.front+1)%MAXQSIZE;//将队首指针向上移动一个位置//如果队满,则循环到第一个位置return OK;
}

这篇关于循环列队的循序结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1100757

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

Java嵌套for循环优化方案分享

《Java嵌套for循环优化方案分享》介绍了Java中嵌套for循环的优化方法,包括减少循环次数、合并循环、使用更高效的数据结构、并行处理、预处理和缓存、算法优化、尽量减少对象创建以及本地变量优化,通... 目录Java 嵌套 for 循环优化方案1. 减少循环次数2. 合并循环3. 使用更高效的数据结构4

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在