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

队列—链式队列

#include<stdio.h> #include<iostream> #include<string.h> #include<stdlib.h> #include<cassert> #include<memory.h> using namespace std; typedef int ELEMTYPE; //链式队列的有效节点的结构体设计: typedef struct LQueue_Node { ELEMTYPE data;//数据域 LQueue_Node* next;//指针域,指向下一个有效节点 }LQueue_Node; //链式队列的辅助节点的结构体设计: typedef struct Link_Queue { LQueue_Node* front;//队头指针:用来指向第一个有效节点 LQueue_Node* rear;//队尾指针:用来指向最后一个有效节点 }Link_Queue; //1.初始化 void Init_LinkQueue(Link_Queue* plist); //2.入队(尾部入) bool Push(Link_Queue* plist, ELEMTYPE val); //3.出队(头部出) bool Pop(Link_Queue* plist); //4. 获取栈头元素值 ELEMTYPE Front(Link_Queue* plist); //5.判空 bool Empty(Link_Queue* plist); //6.销毁 void Destroy(Link_Queue* plist); //7.打印 void Show(Link_Queue* plist); //1.初始化 void Init_LinkQueue(Link_Queue* plist) { assert(plist != nullptr); plist->front = nullptr; plist->rear = nullptr; } //购买节点 LQueue_Node* BuyNode(ELEMTYPE val) { LQueue_Node* p = new (LQueue_Node); p->data = val; p->next = nullptr; return p; } //2.入队(尾部入) bool Push(Link_Queue* plist, ELEMTYPE val) { assert(plist != nullptr); LQueue_Node* q = BuyNode(val); if (q == nullptr)return false; if (Empty(plist)) { plist->front = q; plist->rear = q; } else { plist->rear->next = q; plist->rear = q; } return true; } //3.出队(头部出) bool Pop(Link_Queue* plist) { assert(plist != nullptr); if (Empty(plist))return false; LQueue_Node* p = plist->front; LQueue_Node* q = p->next; plist->front = q; delete (p); p == nullptr; if (plist->front == nullptr) { plist->rear = nullptr; } return true; } //4. 获取栈头元素值 ELEMTYPE Front(Link_Queue* plist) { assert(plist != nullptr); return plist->front->data; } //5.判空 bool Empty(Link_Queue* plist) { assert(plist != nullptr); return plist->front == nullptr; } //6.销毁 void Destroy(Link_Queue* plist) { assert(plist != nullptr); while (Empty(plist)!=false) { Pop(plist); } } //7.打印 void Show(Link_Queue* plist) { assert(plist != nullptr); LQueue_Node* p = plist->front; for (; p != nullptr; p = p->next) { cout << p->data; } }
http://www.jsqmd.com/news/609379/

相关文章:

  • 2026人生第一双高跟鞋选购指南:轻奢女鞋标杆名录 - 资讯焦点
  • 别再暴力搜索了!用动态规划优化旅行商问题,C++代码效率提升实战
  • 联邦学习超参数C、E、B怎么调?我用PyTorch在MNIST上做了组对比实验
  • 【PHP电商订单原子性终极解法】:不依赖数据库事务,用CAS+版本号+本地消息表实现跨服务强一致下单
  • 热键侦探:Windows系统热键冲突的技术破局之道
  • Java final关键字与抽象类深度解析
  • 中小企业PTC软件许可证成本控制实用技巧
  • 迈富时企业级AI操作系统:从中台到智能体的商业价值重构 - 资讯焦点
  • 小程序开发完整步骤,零基础如何制作小程序 - 码云数智
  • 第三天学习
  • 【物理应用】基于matlab碳酸盐岩前向建模(特征包括光带产电、迭代压实、波能、热沉降、轮状图)【含Matlab源码 15306期】
  • 使用钉钉远程操作你的claude code露
  • 微搭低代码MBA 培训管理系统实战 26——首页搭建
  • 基于半导体光放大器的光纤环形腔激光器
  • 迈富时全链路AI应用:本体级建模与跨系统协同执行实践 - 资讯焦点
  • Day15——多维数组
  • 小程序制作平台有哪些?SaaS小程序平台三巨头对决 - 码云数智
  • 原神PC版打不开?msvcp140.dll缺失与0xc000007b错误通用解决手册
  • 从理论到实践:手把手教你用DSP28034实现高效率LLC谐振变换器
  • AI原生CRM重塑制造业增长:迈富时工业场景智能化实践 - 资讯焦点
  • frp代理工具
  • APSIM模型---农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等
  • SaaS小程序制作平台选型指南:码云数智、有赞、微盟 - 码云数智
  • 小程序制作详细流程,无需开发,快速上线 - 码云数智
  • 企业排障必备:交换机端口镜像(SPAN)配置超详细教程
  • 电子电路中的“心脏”:电源衙
  • 小白/程序员必看:收藏这份强化学习训练智能体的实战指南(HelloAgents实战篇)
  • 别再只用测频法了!FPGA频率计三种实现方案(测周/测频/等精度)的Verilog代码对比与选型指南
  • 失眠星人福音!卧室专用帘怎么选?这篇攻略都是实用选帘技巧 - 资讯焦点
  • 20254214实验二《Python程序设计》实验报告