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

自己做网站 什么软件微信公众平台视频网站开发

自己做网站 什么软件,微信公众平台视频网站开发,软件开发需要的软件,百度站长 添加网站目录 队列的基本概念 队列的实现 头文件queue.h 实现函数接口 1.初始化和销毁 2.出队列和入队列 3.获取队头元素和队尾元素 4.队列长度判空 后记 前言 欢迎大家来到小鸥的博客~ 个人主页#xff1a;海盗猫鸥 本篇专题#xff1a;数据结构 多谢大家的支持啦#xff…目录 队列的基本概念 队列的实现 头文件queue.h 实现函数接口 1.初始化和销毁 2.出队列和入队列 3.获取队头元素和队尾元素 4.队列长度判空 后记 前言 欢迎大家来到小鸥的博客~ 个人主页海盗猫鸥 本篇专题数据结构 多谢大家的支持啦 上一篇关于数据结构的博客中我们讲解了栈本篇我们就来讲讲队列吧 队列的基本概念 队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出 FIFO(First In First Out)入队列进行插入操作的一端称为队尾出队列进行删除操作的一端称为队头 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数组头上出数据效率会比较低。 如果使用数组每次出队列之后都需要移动数据消耗较大。 所以本篇使用单链表实现队列因为头删和尾插刚好可以满足队列的需要单链表消耗最大的就是尾删后遍历查找新尾节点但队列不需要尾删所以不存在这个问题。 队列的入队列顺序和出队列顺序一定是相同的。 队列的实现 队列的C语言实现我们要实现的函数和实现栈是差不多的 只是其存放数据的数据结构变为了一个链表 头文件queue.h #pragma once #include stdio.h #include stdlib.h #include assert.h #include stdbool.h typedef int QueueDataType;typedef struct QueueNode {QueueDataType data;struct QueueNode* next; }QNode;typedef struct Queue {QNode* phead;QNode* ptail;int size; }Queue;//初始化和销毁 void QueueInit(Queue* pq); void QueueDestroy(Queue* pq);//入队列和出队列 void QueuePush(Queue* pq, QueueDataType x); void QueuePop(Queue* pq);//队头元素和队尾元素 QueueDataType QueueFront(Queue* pq); QueueDataType QueueBack(Queue* pq);//队列长度函数 int QueueSize(Queue* pq); //判空 bool QueueEmpty(Queue* pq); 这里我们除了定义了链表节点的结构体QueueNode之外我们还额外创建了一个Queue的结构体这个结构体是用来存放队列的一些信息的phead指向队头ptail则指向队尾这样进行入栈和出栈的操作时就可以直接通过这俩个指针直接对链表进行头删和尾插操作从而实现出队列和入队列操作size则表示队列的数据个数。 实现函数接口 1.初始化和销毁 因为我们是通过Queue结构体来操作队列的所以不论初始化还是后面的函数都需要的是Queue*类型的指针 //初始化和销毁 void QueueInit(Queue* pq) {assert(pq);pq-size 0;pq-phead pq-ptail NULL; } void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq-phead;while (cur){QNode* next cur-next;free(cur);cur next;}pq-phead pq-ptail NULL;pq-size 0; } 由于是本质是一个链表结构所以在释放空间时需要遍历链表进行释放。 2.出队列和入队列 队列入数据只能从队尾插入出数据只能从队头出。 //入队列(尾插) void QueuePush(Queue* pq, QueueDataType x) {assert(pq);//动态申请空间创建空间QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail!);return;}newnode-data x;newnode-next NULL;//没有节点时if (pq-ptail NULL){pq-phead pq-ptail newnode;}else//存在节点{pq-ptail-next newnode;pq-ptail newnode;}//队列长度pq-size; } //出队列(头删) void QueuePop(Queue* pq) {assert(pq);assert(pq-phead ! NULL);//只有一个节点if (pq-phead pq-ptail){free(pq-phead);pq-phead pq-ptail NULL;}else//多个节点{QNode* newhead pq-phead-next;free(pq-phead);pq-phead newhead;}pq-size--; } 入队列和出队列就是运用的链表的尾插和头删的逻辑。 3.获取队头元素和队尾元素 //队头元素和队尾元素 QueueDataType QueueFront(Queue* pq) {assert(pq);assert(pq-phead ! NULL);return pq-phead-data; } QueueDataType QueueBack(Queue* pq) {assert(pq);assert(pq-ptail ! NULL);return pq-ptail-data; } 由于我们的Queue结构体中就存储了队头和队尾的地址所以这两个函数就可以直接返回对应的数据。 4.队列长度判空 //队列长度函数 int QueueSize(Queue* pq) {assert(pq);return pq-size; } //判空 bool QueueEmpty(Queue* pq) {assert(pq);return !(pq-size); } Queue结构体中的size就是在这里起作用的如果没有size这个成员就需要遍历链表来实现。 后记 本篇队列的介绍和C语言实现就结束啦 下篇我们将讲解几道栈和队列的相关OJ题大家不见不散哦 那么我们下次见~
http://www.hkea.cn/news/14265932/

相关文章:

  • 网站定制公司写一篇推广商品的软文
  • 认证空间如何显示网站seo网站内部优化方案
  • 太原网站排名系统西安专业网站建设服务
  • 苏州市建设安全监督局网站wordpress不提示更新
  • ui设计培训班排名引擎优化seo是什么
  • 大庆建设网站表格下载dw软件手机版
  • 苏州网页服务开发与网站建设对电子商务网站建设的认识
  • 网站服务器位于北美湖北建站中心
  • ps做网站导航条高度拙人营造设计公司官网
  • 中药材天地网做中药零售网站成都网站建设网站制作公司
  • 网站建设选择题题库网站建设 官网
  • 河南微网站开发河南高端网站高端网站建设
  • 神奇网站廊坊seo外包公司费用
  • 西安工商注册网上平台北京网站优化外包
  • 产品是做网站做网站能做职业吗
  • 网站空间哪里便宜山西房地产网站建设
  • 民生热点新闻seo咨询价格找推推蛙
  • 宁波网站建设方案报价长沙网开亿面做网站多少钱
  • 国内外网站大连建设工程交易中心
  • 建筑毕业设计代做网站网站侧边菜单
  • seo网站建设规划做网站好的网络公司
  • 黄页网页的推广网站wordpress jexus
  • 外贸网站建设不可缺少的灵活性一般做企业网站需要什么
  • 揭阳网站开发mituad网站备案管理办法
  • 做网站服务费税率邯郸网站建设优化排名
  • 做网站需要会编程吗网站建设通常用到哪些编程
  • 中国网站建设市场排名做设计素材在哪个网站
  • 贵阳手机网站开发商务网站建设与维护 ppt
  • 域名网站注册最划算当前主流的网络营销方式
  • 搭建网站需要多少钱网站建设方式丨金手指排名26