循环列队的循序结构

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

相关文章

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 修改后的版本问题在

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

JAVA中while循环的使用与注意事项

《JAVA中while循环的使用与注意事项》:本文主要介绍while循环在编程中的应用,包括其基本结构、语句示例、适用场景以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录while循环1. 什么是while循环2. while循环的语句3.while循环的适用场景以及优势4. 注意

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s