当前位置: 首页 > news >正文

队列的基本概念及顺序实现

队列的基本概念

队列的定义

​ 队列(Queue)简称队,也是一宗操作受限的线性表,只允许在表的一段进行插入,而在表的另一端进行删除。向队列中插入元素成为入队进队;删除元素成为出队离队

​ 特性:先进先出 (First In First Out,FIFO)

  • 队头(Front): 允许删除的一端,也成为队首
  • 队尾(Rear):允许插入的一段
  • 空队列:不含任何元素的空表

队列常见的基本操作

InitQueue(&Q):初始化队列,构造一个空队列Q

QueueEmpty(Q) :判队列空,若队列空返回true,否则返回false

EnQueue(&Q,x) 入队,若队列未满,则将x加入

DeQueue(&Q,&x) 出队,若队列非空,删除队头元素,并用x返回

GetHead(Q,&x) 读队头元素,若队列Q非空,则将队头元素赋值给x

队列的顺序存储结构

#define MaxSize 10			//定义队列中元素的最大个数
typedef struct{ElemType data[MaxSize];	//用静态数组存放队列元素int front,rear;			//队头指针和队尾指针
}SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){Q.rear = Q.front = 0;
}
//判断队列是否为空
bool QueueEmpty(SqQueue Q){if(Q.rear == Q.front)return true;elsereturn false;
}
//入队
bool EnQueue(SqQueue &Q,ElemType x){if((Q.rear+1)%MaxSize == Q.front)	//判断队满的条件return false;			//队列满报错Q.data[Q.rear] = x;			//将x插入队尾Q.rear = (Q.rear+1)%MaxSize;return true;
}
//出队
bool DeQueue(SqQueue &Q,ElemType &x){if(Q.rear == Q.rear)return false;		//队空报错x=Q.data[Q.front];		Q.front=(Q.front+1)%MaxSize;return true;
}
//获得队头元素的值,并用x返回
bool GetHead(SqQueue Q,ElemType &x){if(Q.rear == Q.front)return false;		//队空报错x=Q.data[Q.front];return true;
}

Q.rear == MaxSize不能作为队列满的条件

队列已满的条件 队尾指针的下一个位置是队头指针,(Q.rear +1)%MaxSize == Q.front

求队列元素的个数 (rear + MaxSize-front)%MaxSize

http://www.lryc.cn/news/436491.html

相关文章:

  • Leetcode 最长连续序列
  • linux网络编程——UDP编程
  • 第四部分:1---文件内核对象,文件描述符,输出重定向
  • 如何在开发与生产环境中应用 Flask 进行数据库管理:以 SQLAlchemy 和 Flask-Migrate 为例
  • 【Java零基础】Java核心知识点之:Map
  • 9.12日常记录
  • 光纤的两种模式
  • SpringMVC的初理解
  • Python 基本库用法:数学建模
  • Android Greendao的数据库复制到设备指定位置
  • Ajax 揭秘:异步 Web 交互的艺术
  • TitleBar:打造高效Android标题栏的新选择
  • Lua协同程序Coroutine
  • 【vue+帆软】帆软升级,从版本9升级到版本11,记录升级过程
  • linux从0到1 基础完整知识
  • “人大金仓”正式更名为“电科金仓”; TDSQL-C支持回收站/并行DDL等功能; BigQuery支持直接查询AlloyDB
  • 大模型微调 - 用PEFT来配置和应用 LoRA 微调
  • Ubuntu构建只读文件系统
  • 【黑金系】金融UI/UX体验设计师面试作品集 Figma源文件分享
  • Golang | Leetcode Golang题解之第392题判断子序列
  • Liunx常用指令
  • CSS基础:浮动(float)如何使用清楚以及代替方法
  • margin重叠该怎么解决?
  • Linux学习笔记(黑马程序员,前四章节)
  • tekton pipeline resources
  • 使用Python实现多个PDF文件的合并
  • 微擎忘记后台登录用户名和密码怎么办?解决方法
  • blender我的对称模型好像中点被我不小心移动了 我现在如果雕刻 两边修改的地方不是对称的 我该怎么办
  • 数据库——MySQL概述
  • 云服务器部署DB-GPT项目