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

网站后台模板 下载项目建议书

网站后台模板 下载,项目建议书,提供网站建设的公司,备案号放网站下面居中目录 1.队列的概念及结构 2.队列的实现 2.1队列结构定义 2.2队列的初始化及销毁 2.3数据入队 2.4数据出队 2.5访问队头数据 2.6访问队尾数据 2.6判断队列是否为空 2.7求队列的大小 2.7打印队列 1.队列的概念及结构 队列#xff1a;只允许在一端进行插入数据操作只允许在一端进行插入数据操作另一端进行删除数据操作的特殊线性表 队列中先进先出FIFOFirst In First Out 入队列进行插入操作的一端称为队尾 出队列进行删除操作的一端称为队头 2.队列的实现 队列结构可以使用数组和链表结构实现但一般采用的是链表因为对于数组结构队头出数据的效率较低 2.1队列结构定义  使用链表实现队列队列中的每个元素都是节点的形式所以需要定义节点的结构 对于队列其具有队尾入数据队头出数据的特性所以其结构定义需要两个指针分别指向队头和队尾 typedef int QDataType; typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode;typedef struct Queue {QNode* head;QNode* tail; }Queue; 2.2队列的初始化及销毁 初始化即队列为空队列队头指针和队尾指针都指向空 销毁队列即释放队列中所有节点的空间队头指针和队尾指针重新指向空 //队列初始化 void QueueInit(Queue* pq) {assert(pq);pq-head pq-tail NULL; } //队列销毁 void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* del cur;cur cur-next;free(del);}pq-head pq-tail NULL; }2.3数据入队 队列结构中数据入队从队尾入需要考虑空队列和非空队列两种情况 1️⃣空队列 2️⃣非空队列  空队列和非空队列不同的是空队列插入数据时需要更新队头指针 //数据入队 void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}else{newnode-data x;newnode-next NULL;}//空队列时插入if (pq-tail NULL){pq-head pq-tail newnode;}//非空队列时插入else{pq-tail-next newnode;//链接新元素pq-tail newnode;//更新队尾} }2.4数据出队 队列结构中数据出队从队头出对于空队列出队操作非法 出队操作后需要更新队头指针并释放已出队节点的空间 特殊情况队列中只有一个节点 //数据出队 void QueuePop(Queue* pq) {assert(pq);//空队列不能进行出队操作assert(!QueueEmpty(pq));//队列中只有一个元素if (pq-head-next NULL){free(pq-head);pq-head pq-tail NULL;}else{QNode* del pq-head;pq-head pq-head-next;free(del);del NULL;} }2.5访问队头数据 队头数据的访问操作在队列为空时非法所以需要先断言非空链表才可以进行队头数据的访问操作通过队头指针访问即可 //访问队头数据 QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-data;}2.6访问队尾数据 队尾数据的访问操作在队列为空时非法所以需要先断言非空链表才可以进行队尾数据的访问操作通过队尾指针访问即可 //访问队尾数据 QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-tail-data; }2.6判断队列是否为空 队列为空则队头指针和队尾指针都指向空可以使用if-else语句进行返回 也可以参考以下代码直接返回pq-head NULL pq-tail NULL只有当pq-head和pq-tail同时为NULL是才返回真即队列为空 Note 判空函数的返回类型为bool但是C语言标准中没有bool类型所以需要我们自己定义 #define bool int //判断队列是否为空 bool QueueEmpty(Queue* pq) {assert(pq);/*if (pq-tail pq-head NULL){return true;}else{return false;}*/return pq-head NULL pq-tail NULL; }2.7求队列的大小 求队列的大小遍历统计节点个数并返回即可 //求队列的大小 int QueueSize(Queue* pq) {assert(pq);int size 0;QNode* cur pq-head;while (cur){size;cur cur-next;}return size; } 2.7打印队列  为了便于观察入队与出队操作可以编写一个打印函数便于调试 //打印队列 void QueuePrint(Queue* pq) {assert(pq);QNode* cur pq-head;while (cur){printf(%d , cur-data);cur cur-next;}printf(\n); }
http://wiki.neutronadmin.com/news/96652/

相关文章:

  • icp网站负责人网站到底怎么做出来的
  • 网站知识介绍建设部监理网站官网
  • 紫金网站建设公司安徽六安市地图
  • 帮别人做非法网站网站开发需要注意的问题
  • 郑州网站高端网站设计吉林省住房和城乡建设部网站
  • 网站ftp管理工具网站建设成都
  • 网站建设教程大全 百度网盘网站如何做线上支付功能
  • 宣讲家网站 家风建设安徽网站建设服务
  • 什么是网站根目录网络营销案例文章
  • outlook企业邮箱收费标准惠州百度seo
  • 中企动力网站建设方案湛江免费企业建站
  • 台州网站制作推广游戏科技
  • 适合翻译做兼职的网站图片外链网站
  • 哪个网站比较好金华网站建设电话
  • 教育行业网站个人工作室装修风格
  • 上海免费建网站网站建设合理化建议方案
  • 东莞网站竞价推广win7 建网站
  • 网站建设的安全应该注意什么简单logo设计图片
  • 重庆双八自助建设网站车之家汽车报价2022官网
  • 安徽旅游集团网站建设斐讯k2做网站
  • 微网站怎么做的好名字在wordpress上添加播放视频教程
  • 网站改版定位策划书dedecms迁移wordpress
  • 南昌县住房和城乡建设局网站移植wordpress数据库
  • 好用的在线地图网站郑州高端网站案例
  • 上海网站建设搜q.479185700百度营销登录入口
  • 保定投递网站建设广告公司出售家具 税率
  • 珠海网站外包网站常用的一种js的图片幻灯片特效代码
  • 速卖通网站怎样做店面的二维码wordpress最新中文版
  • 服务周到的微网站建设物流公司网站怎么做
  • 网站建设的专业术语html5 移动网站