循环列队的循序结构

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

相关文章

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循