当前位置: 首页 > 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.mrgr.cn/news/25673.html

相关文章:

  • 【2025】基于python的网上商城比价系统、智能商城比价系统、电商比价系统、智能商城比价系统(源码+文档+解答)
  • [基于 Vue CLI 5 + Vue 3 + Ant Design Vue 4 搭建项目] 09 集成 Ant Design Vue
  • 45. 跳跃游戏 II
  • D2307 Zblog 的CDNfly|CloudFlare全能CDN自动刷新缓存插件_自动清理_适配优化2.1.0版本
  • [项目][WebServer][Util类]详细讲解
  • 腾讯云、阿里云、华为云优惠券领取、查看、使用教程分享
  • PCL 读取STL文件转换为点云
  • odoo14 | 报错:Database backup error: Access Denied
  • MySQL 存储过程:强大的数据库功能利器
  • C++缺省参数
  • 数学基础 -- 线性代数之特征值与特征向量深入解析
  • 十,Spring Boot 的内容协商的详细剖析(附+Debug调试说明)
  • 数据库锁有哪些?什么是死锁?
  • brew install node提示:Error: No such keg: /usr/local/Cellar/node
  • Linux 驱动编写框架 并编译导入开发板
  • Leetcode 第 138 场双周赛题解
  • 分类预测|基于改进的灰狼IGWO优化支持向量机SVM的数据分类预测matlab程序 改进策略:Cat混沌与高斯变异
  • 阿里达摩院:FunASR - onnxruntime 部署
  • 单链表的建立
  • Httplib库源码粗度