新闻详情

新闻详情

首页 / 资讯中心 / 详情

数据结构笔记(C++,队列的基本操作代码)

发布时间:2026/9/26 11:09:37来源:尧图网络
数据结构笔记(C++,队列的基本操作代码)
队列特点先进先出或者后进后出主要操作1、顺序队列顺序队列有两个状态队空、队满两个操作入队、出队。定义typedef struct{ int data[MaxSize]; int front; int rear; }SqQueue;初始化void InitQueue(SqQueue qu){ qu.frontqu.rear0;//队首队尾指针重合并指向0 }判空int QueueEmpty(SqQueue qu){ if(qu.frontqu.rear)return 1;//不论队首队尾指针指向数组中的哪个位置 else return 0; //只要两者重合即为队空 }入队//先移动指针再移动元素 int enQueue(SqQueue qu,int x){ if((qu.rear1)%MaxSizequ.front)return 0;//判满满就不能入队 qu.rear(qu.rear1)%MaxSize;//若不满则先移动指针 qu.data[qu.rear]x;//再存入元素 return 1; }出队int deQueue(SqQueue qu,int x){ if(qu.frontqu.rear)return 0;//若队空则不能入队 qu.front(qu.front1)%MaxSize;//若队不空先移动指针 xqu.data[qu.front]; return 1; }提醒这些函数在考研程序题中并不实用需要在题目中提取其中有用的操作。2、链队链队的特点是不存在队列满上溢的情况这里用单链表实现。两个状态队空、队满两个操作入队、出队。节点定义typedef struct QNode{ int data; struct QNode *next; }QNode;类型定义typedef struct{ QNode *front; QNode *rear; }LiQueue;初始化int InitQueue(LiQueue *lqu){ lqu(LiQueue*)malloc(sizeof(LiQueue)); lqu-frontlqu-rearNULL; }判空int QueueEmpty(LiQueue *lqu){ if(lqu-rearNULL||lqu-frontNULL)return 0; else return 1; }入队void enQueue(LiQueue *lqu,int x){ QNode *p; p(QNode*)malloc(sizeof(QNode)); p-datax; p-nextNULL; if(lqu-rearNULL){ //若队列为空 lqu-frontlqu-rearp;//则新结点是队首结点也是队尾结点 } else { lqu-rear-nextp;//否则将新结点链接到队尾rear指向它 lqu-rearp; } }出队int deQueue(LiQueue *lqu,int x){ QNode *p; if(lqu-rearNULL)return 0;//队空不能出栈 else{ plqu-front; } if(lqu-frontlqu-rear){//队列中只有一个结点时的出队操作需要特殊处理 lqu-frontlqu-rearNULL; } else{ lqu-frontlqu-front-next; } xp-data; free(p); return 1; }提醒1以上算法不需要记忆读懂并能够理解即可2考研中尽量用顺序队列避免用链队除非明确规定。假溢出什么是假溢出假溢出是指队列用的空间还未满但尾指针却移动到末尾不能继续入队的现象。如何解决假溢出1直接申请一块足够大的数组让rear永远不会触达数组尾部。2每当出队把队列中所有有效元素整体向前移动让front始终保持在数组下标 0 的位置。3把一维数组逻辑上看成环形利用取模运算%当rear走到数组末尾时绕回到数组开头复用前面闲置的空间循环队列方法队空frontrear队满(rear1)%Mfront。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Linux火焰图实战:从原理到Java性能排查 2026/9/26 12:07:08

Linux火焰图实战:从原理到Java性能排查

1. 为什么学了这么多年Linux,我还是强烈建议你掌握火焰图大概半年前,我接手一个Java线上服务,高峰期CPU直接飙到300%以上,top命令里看到的是java进程占满,但具体是哪段代码在烧CPU,完全抓瞎。按老套路&…

阅读更多 →
移动端Canvas画板批注PDF预览:坐标系对齐与数据存储实战 2026/9/26 12:07:07

移动端Canvas画板批注PDF预览:坐标系对齐与数据存储实战

简介:这是一份面向移动端 H5 开发者的 Canvas 画板批注 PDF 预览实战资源,适合需要在小程序、WebView 或移动浏览器中实现 PDF 阅读与手写批注功能的初中级前端工程师。资源围绕 PDF.js 解析渲染与 Canvas 触控绘图两条主线展开,涵盖 PDF 文档…

阅读更多 →
EasyPlayer.js H5播放器接入指南:RTMP/FLV/HLS协议与解码实践 2026/9/26 12:07:06

EasyPlayer.js H5播放器接入指南:RTMP/FLV/HLS协议与解码实践

简介:EasyPlayer.js是一套面向网页开发的H5播放器源码包,能够同时支持HTTP-FLV、WS-FLV、HLS(m3u8)等直播与点播协议,兼容H.264、H.265、AAC等编码格式,并提供MSE、WASM等多种解码方式,可运行于…

阅读更多 →
Flutter鸿蒙适配指南:图片平铺的四种实现与性能优化 2026/9/26 12:07:05

Flutter鸿蒙适配指南:图片平铺的四种实现与性能优化

1. 图片重复模式:表面是平铺,背后是纹理采样1.1 平铺需求在真实项目里有多常见先别急着把它当成一个简单题目。图片重复模式(也就是 Flutter 里的 ImageRepeat)在项目里出现的频率远比你想象的高:聊天界面底纹、登录页…

阅读更多 →
智能体开发之MCP协议从理论到实践:TaoToken统一Key接入Cline配置指南 2026/9/26 12:07:03

智能体开发之MCP协议从理论到实践:TaoToken统一Key接入Cline配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AI检测为何一查一个准?从困惑度到人味写作的降AIGC实用流程 2026/9/26 12:06:57

AI检测为何一查一个准?从困惑度到人味写作的降AIGC实用流程

先说个现象:这两年高校对AIGC痕迹的核查越来越普遍,很多本科生写课程论文、开题报告、结课作业时,都会收到“AI检测偏高”的反馈。于是“2026必备10个降AIGC工具”这类标题满天飞,评论区全是求链接、求教程的。但我在帮学弟学妹和…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉