链队列

简介:

链队列的实质就是只限制在表头做添加,表尾做删除的单链表

一 链队列示意图


注:增加指向链表的队尾指针,便于在表尾做插入操作;其中Q为LinkQueue型的指针。

二 链队列基本运算

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //置空队  
  2.      void InitQueue(LinkQueue *Q)  
  3.      {  
  4.            Q->front=Q->rear=NULL;  
  5.      }  


[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //判队空  
  2.      intQueueEmpty(LinkQueue *Q)  
  3.      {  
  4.            return Q->front==NULL&&Q->rear==Null;  
  5.            //实际上只须判断队头指针是否为空即可  
  6.      }  
[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //入队  
  2. void EnQueue(LinkQueue *Q,DataType x)  
  3. {  
  4.     QueueNode *p = (QueueNode *)malloc(sizeof(QueueNode));//申请新节点  
  5.     p->data = x;  
  6.     p->next = NULL;  
  7.     if(QueueEmpty(Q))  
  8.         Q->front = Q->rear = p;//将x插入到空队列  
  9.     else  
  10.     {  
  11.         //x插入到非空队列的尾  
  12.         Q->rear->next = p;//*p链到原队尾节点后  
  13.         Q->rear = p;//队尾指针指向性的队尾  
  14.     }  
  15. }  
[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //出队  
  2. DataType DeQueue(LinkQueue *Q)  
  3. {  
  4.     DataType x;  
  5.     QueueNode *p;  
  6.     if(QueueEmpty(Q))  
  7.         Error("Queue undefflow");//下溢  
  8.     p = Q->front;//指向对头结点  
  9.     x = p->data;//保存头结点的数据  
  10.     Q->front = p->next;//将对头从节点上摘下来  
  11.     if(Q->rear=p)//原队中只有一个节点,删去后队列变空此时的头指针已为空  
  12.         Q->rear = NULL;  
  13.     free(p);  
  14.     return x;  
  15.   
  16. }  

转载:http://blog.csdn.net/xsf50717/article/details/39938553


目录
相关文章
|
Unix Linux iOS开发
振南技术干货集:各大平台串口调试软件大赏(4)
振南技术干货集:各大平台串口调试软件大赏(4)
|
22天前
|
自然语言处理 物联网 Shell
从 50 步到 4 步:LightX2V 如何把视频生成拉进20 秒时代?
LightX2V 是一款轻量级视频生成框架,通过4步蒸馏技术,将传统需50步的扩散模型压缩至仅4步,推理速度提升20倍,生成质量依旧保持影院级水准。支持文生视频与图生视频,兼容LoRA、量化等部署方案,助力AIGC高效落地。
219 0
从 50 步到 4 步:LightX2V 如何把视频生成拉进20 秒时代?
|
机器学习/深度学习 人工智能 自然语言处理
当语言遇见智慧火花:GPT家族历代模型大起底,带你见证从平凡到卓越的AI进化奇迹!
【10月更文挑战第6天】随着自然语言处理技术的进步,GPT系列模型(Generative Pre-trained Transformers)成为该领域的明星。从GPT-1的开创性工作,到GPT-2在规模与性能上的突破,再到拥有1750亿参数的GPT-3及其无需微调即可执行多种NLP任务的能力,以及社区驱动的GPT-NeoX,这些模型不断进化。虽然它们展现出强大的语言理解和生成能力,但也存在如生成错误信息或偏见等问题。本文将对比分析各代GPT模型的特点,并通过示例代码展示其部分功能。
450 2
|
人工智能 安全 算法
Copilot的缺陷分析与探讨
【2月更文挑战第17天】Copilot的缺陷分析与探讨
509 1
Copilot的缺陷分析与探讨
|
缓存 NoSQL 数据库
探秘Redis读写策略:CacheAside、读写穿透、异步写入
本文介绍了 Redis 的三种高可用性读写模式:CacheAside、Read/Write Through 和 Write Behind Caching。CacheAside 简单易用,但可能引发数据不一致;Read/Write Through 保证数据一致性,但性能可能受限于数据库;Write Behind Caching 提高写入性能,但有数据丢失风险。开发者应根据业务需求选择合适模式。
2166 2
探秘Redis读写策略:CacheAside、读写穿透、异步写入
|
存储 负载均衡 NoSQL
MongoDB·最佳实践·count不准原因分析
背景 一般来说,除了由于secondary延迟可能造成查询secondary节点数据不准以外,关于count的准确性问题,在MongoDB4.0官方文档中有这么一段话On a sharded cluster, db.
|
JavaScript 前端开发
【曹操】echarts图例legend选中状态动态设置
曹操项目语音质量分析功能前端页面展示,需要对所有指标的图例默认选中状态只显示前两个,其他指标的图例状态默认为灰色。
4875 0
|
8月前
|
人工智能 Java 测试技术
mockito入门
本内容主要介绍Mockito框架的使用,包括快速上手指南、案例分析和高级用法。涵盖Mockito资源链接、依赖配置及版本要求(4.x支持JDK1.8,5.x需JDK11+)。通过具体代码示例,讲解了Spy与Mock对象的区别及应用场景,如创建真实或虚拟对象、模拟方法调用等。同时深入探讨了做桩技术,包括对具体参数和任意参数的处理,并提供注解方式简化测试代码。此外,针对私有方法的Mock需求,介绍了PowerMockito扩展框架及反射技术的实现方式,强调了设计优化的重要性,建议通过重构避免直接Mock私有方法,以提升测试健壮性和代码可维护性。最后附有参考资料供进一步学习。
708 8
|
10月前
|
机器学习/深度学习 计算机视觉 异构计算
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块
394 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块
|
11月前
|
Java 程序员 API
菜鸟之路Day05一一正则表达式
### 菜鸟之路Day05——正则表达式 作者:blue 日期:2025.1.23 本文学习自BV17F411T7Ao,黑马程序员。主要介绍了正则表达式的两个作用:校验字符串是否满足规则和在文本中查找内容。详细讲解了字符类、预定义字符、数量词、逻辑词等基础知识,并通过多个Java代码示例演示了正则表达式的应用,包括用户名验证、身份证号验证、文本爬取等实际场景。
297 77