尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【计算机408】数据结构 | 队列
一、前言本篇为数据结构的第五讲队列队列是先进先出的线性表允许删除的叫队头允许插入的叫队尾二、顺序队列循环队列1. 假溢出问题当不断出队时front向后移动数组前面会空出大量空闲位置但rear走到数组末尾后就算数组前面有空位也无法继续入队看起来 “满了”实际空间并没有用完这就是假溢出。2.循环队列判空、判满的3种方法空队列条件Q.rear Q.front满队列条件Q.rear Q.front牺牲一个空间引入一个标志变量区别空和不空使用计数器3. 循环队列入队入队a2,a1,a0核心代码if((rear 1) % maxSize front){ resize(); } rear (rear 1) % maxSize; data[rear] x;出队出a1,a0核心代码if(empty()) throw outOfRange(); // 若队列为空则无元素出队抛出异常outOfRange()。 front (front 1) % maxSize; return data[front];取队头核心代码if(empty()) throw outOfRange(); // 若队中无元素则抛出异常outOfRange() return data[(front 1) % maxSize]; // 取队首元素返回队首元素数值三、链队列1.入队核心代码Node *p new Node(value,top); top p; //将值为value的元素推入栈中2.出队核心代码if(empty()) throw outOfRange(); //若为空栈则无法出栈元素则抛出异常outOfRange() Node *p top; T value p-data; top top-next; delete p; //将栈顶元素出栈并返回元素值。 return value;3.取栈顶元素核心代码if(empty()) throw outOfRange(); // 若为空栈无法返回栈顶元素则抛出异常outOfRange() return top-data; // 取栈顶操作返回栈顶元素值4.求栈中元素个数核心代码Node *p top; int count 0; while(p){ count; p p-next; } return count;5.清空栈核心代码Node *p; while(top ! NULL){ // 将栈中元素逐一出栈并释放空间。 p top; top top-next; delete p; }四、总结本文围绕队列重点讲解了顺序队列循环队列与链队列两种实现方式并复刻了核心操作与关键细节。在顺序队列循环队列部分先解决了假溢出问题。同时针对循环队列判空与判满条件相同Q.rear Q.front的难点介绍了三种常用方法。最后给出了入队、出队和取队头操作的核心代码。在链队列部分我们基于链表实现了队列避免了顺序存储中可能出现的假溢出和空间浪费问题。总的来说顺序队列循环队列适合元素数量可预估、追求较高空间利用率的场景链队列则更灵活适合元素数量动态变化、需要频繁插入和删除的场景。理解两者的区别与适用场景有助于在实际开发中做出合理选择。
RELATED

相关推荐

快速上手LangGraph:5分钟搭建能记住状态的AI智能体编排系统

快速上手LangGraph:5分钟搭建能记住状态的AI智能体编排系统

快速上手LangGraph:5分钟搭建能记住状态的AI智能体编排系统 【免费下载链接】langgraph Build resilient agents. 项目地址: https://gitcode.com/GitHub_Trending/la/langgraph 做过Agent的人都踩过同一个坑:LLM跑着跑着就"失忆"了&am…

📅 2026/10/5 10:19:00
Jspreadsheet v4 元信息(Meta Information)完全指南:单元格隐藏数据的读写、事件与源码解析

Jspreadsheet v4 元信息(Meta Information)完全指南:单元格隐藏数据的读写、事件与源码解析

前端UI组件 【免费下载链接】ce Jspreadsheet is a lightweight JavaScript data grid component for creating interactive data grids with advanced spreadsheet controls. 项目地址: https://gitcode.com/gh_mirrors/ce/ce 点击查看 免费下载 Meta Information…

📅 2026/10/5 10:19:00
tldr 仓库中的 `uname26`:Linux 架构别名命令页面解析与 `setarch` 实战

tldr 仓库中的 `uname26`:Linux 架构别名命令页面解析与 `setarch` 实战

文档教程知识库 【免费下载链接】tldr Collaborative cheatsheets for console commands 📚. 项目地址: https://gitcode.com/GitHub_Trending/tl/tldr 点击查看 免费下载 uname26 是 tldr(tl;dr)项目仓库中记录的一个 Linux 命令…

📅 2026/10/5 10:19:00
MORE NEWS

更多资讯

📰

OSPF综合实验:多区域、ABR、MSTP与VRRP联动排错实战

做网络这行,OSPF基本是绕不开的必修课。不管是园区网的骨干、数据中心的出口,还是运营商的核心域,OSPF这个链路状态路由协议的身影几乎无处不在。前阵子我搭了一套OSPF综合实验环境,把多区域设计、ABR区域边界路由、MSTP二层冗余、…

📰

Windows 原生终端安装 Claude Code 全攻略:环境配置、VS Code 集成与多模型接入

没在 Windows 上装过 Claude Code 的开发者,第一次往往都会一头雾水——明明官方文档对着敲,却总卡在奇怪的步骤上。好消息是,Claude Code 官方已经支持 Windows 原生终端,装起来并不复杂;坏消息是,它依赖的…

📰

Polyworks脚本开发入门:环境搭建与第一个自动化宏

做三维测量的朋友应该都有过这种经历:来了一批新零件,要挨个加载CAD模型、对齐基准坐标系、跑一遍检测路径、再导出一份PDF报告,整套手动操作下来快则十分钟,慢则半小时;批量件一多,一天大半时间都耗在重复…

📰

AgentsMesh 新手必读:AgentPod、Runner、Workspace、Ticket 四大核心概念清单

AgentsMesh 新手必读:AgentPod、Runner、Workspace、Ticket 四大核心概念清单 【免费下载链接】AgentsMesh The AI Agent Workforce Platform. Run a hundred AI coding agents across your own machines — schedule, isolate, and steer them all from one consol…

📰

中文专利多标签分类实战:RoBERTa微调与IPC层级优化

简介:本资源是一份面向自然语言处理与知识产权信息检索领域的学术研究文档,聚焦于利用预训练语言模型解决细粒度多标签专利分类难题,适用于高校研究生、NLP算法工程师及专利分析从业者。文档系统阐述了基于BERT、RoBERTa和RBT3模型的微调方案…

📰

OpenClaw部署QQ机器人教程:从WSL2环境到本地大模型接入全攻略

1. 为什么QQ机器人配置会卡在起跑线上 先聊个真实场景。前阵子群里有个朋友兴致勃勃地说要拿OpenClaw做个QQ机器人,结果折腾了三天,连第一步都没走出去——他卡在了WSL环境验证上,报错信息里写着"无法安全验证WSL 2环境,请在…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬