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

数据结构——队列的链式存储结构

队列的链式存储是通过链表实现队列的结构,称为“链式队列”。它利用链表的动态性,无需预先分配固定大小的空间,入队、出队操作仅需修改指针,能灵活应对元素数量的变化,也不会出现顺序队列的“假溢出”问题。链式队列通常有“不带队头结点”和“带队头结点”两种形式,下面分别讲解。

1. 不带队头结点的链式队列

不带队头结点的链式队列,直接通过指针标记队头和队尾元素的位置。如图3.8“不带队头结点的链式队列”所示,front指向队头元素a₁所在的结点,rear指向队尾元素aₙ所在的结点,链表的最后一个结点(队尾结点)的next指针为(即NULL)。队空时,frontrear都为NULL(无任何结点)。

(1)结构定义与初始化

用代码定义不带队头结点的链式队列结构:

typedef struct LinkNode {ElemType data;           // 数据域,存储队列的元素值struct LinkNode *next;   // 指针域,指向下一个结点
} LinkNode;typedef struct {LinkNode *front, *rear;  // 队头指针(指向队头结点)和队尾指针
} LinkQueue;

初始化队列(队空时,frontrear均为NULL):

void InitQueue(LinkQueue &Q) {Q.front = Q.rear = NULL;
}
(2)入队操作

入队是在队尾添加新元素,需分“队空”和“队非空”两种情况处理:

  • 若队空(rear == NULL):新结点既是队头也是队尾,frontrear都指向它;
  • 若队非空:将新结点接在rear之后,再将rear更新为新结点。

代码实现:

bool EnQueue(LinkQueue &Q, ElemType e) {LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode
http://www.dtcms.com/a/499318.html

相关文章:

  • 媒体135网站口碑好的宜昌网站建设
  • 湖南省建设银行网站官网深圳龙华网站建设公司
  • 网站后台管理系统源码网站空间文件夹
  • 元宇宙与公共服务的深度融合:重构民生服务的效率与温度
  • 深入解析十字链表:从理论到实践的全面指南
  • 红色页面网站护肤品网站建设的摘要
  • GB28181视频服务wvp部署(一)
  • 吴忠住房和城乡建设局网站小学生编程网课前十名
  • 浅谈 OpenAPI Schema—— 接口契约的标准语言
  • TSDF 体素模型与光线投射
  • 【学习笔记】利用meshlab进行曲面的质量检查
  • S2--单链表
  • jdk.random 包详解
  • 如何做网站接口关于电子商务网站建设的现状
  • 网站栏目设计内容谷歌在线浏览器入口
  • 聊聊 Unity(小白专享、C# 小程序 之 自动更新)
  • 截取网站流量dede购物网站
  • 某Boss直聘数据获取
  • Spring Boot 3零基础教程,WEB 开发 默认欢迎页 笔记28
  • Redis极简入门 整合springboot
  • 漫蛙漫画官网入口 - 免费漫画在线看|防走失页入口
  • MySQL中的约束详解
  • 服务流程企业网站东莞市建设安监监督网站
  • leetcode 206. 反转链表 python
  • 【C语言】自定义类型(附源码与图片分析)
  • 用户头像文件存储功能是如何实现的?
  • 网站设计大概在什么价位渠道销售
  • C++竞赛递推算法-斐波那契数列常见题型与例题详解
  • 单元测试-例子
  • 网站顶部素材山西制作网站