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

西峡微网站开发有赞小程序开发报价

西峡微网站开发,有赞小程序开发报价,泗洪县建设局网站,长沙地区网络优化设计方案文章目录 #x1f438;一、队列的概念及结构#x1f344;1、队列的概念定义#x1f344;2、动图演示 #x1f438;二、队列的实现#x1f438;三、链表结构队列详解#x1f34e;创建队列的结构⭕接口1#xff1a;定义结构体#xff08;QNode、Queue#xff09;⭕接口2… 文章目录 一、队列的概念及结构1、队列的概念定义2、动图演示 二、队列的实现三、链表结构队列详解创建队列的结构⭕接口1定义结构体QNode、Queue⭕接口2初始化QueueInit⭕接口3销毁QueueDestroy⭕接口4入队列QueuePush⭕接口5出队列QueuePop⭕接口6取队头数据QueueFront⭕接口7取队尾数据QueueBack⭕接口8获取队列大小QueueSize⭕接口9判空QueueEmpty 四、完整代码Queue.hQueue.cTest.c 一、队列的概念及结构 1、队列的概念定义 队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出FIFO(First In First Out) 入队列进行插入操作的一端称为队尾 出队列进行删除操作的一端称为队头 入队列进行插入操作的一端称为队尾出队列进行删除操作的一端称为队头 2、动图演示 可以想象成排队去食堂打饭前面先打完饭的就从队头先走了后来的就需要在后面队尾继续排队 二、队列的实现 队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数组头上出数据效率会比较低。 三、链表结构队列详解 创建队列的结构 这里先创建三个文件 1️⃣Queue.h文件用于函数的声明 2️⃣Queue.c文件用于函数的定义 3️⃣Test.c文件用于测试函数 建立三个文件的目的 将队列作为一个项目来进行编写方便我们的学习与观察。 ⭕接口1定义结构体QNode、Queue 这里需要定义两个结构体QNode、Queue分别表示队列链表每个节点结构和整个队列链表结构 请看代码与注释 //自定义类型 typedef int QDataType;//队列链表每个节点结构 typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode;//整个队列链表结构 typedef struct Queue {QNode* phead;QNode* ptail;int size; }Queue;⭕接口2初始化QueueInit 请看代码与注释 //初始化 void QueueInit(Queue* pq) {//断言传入指针不为NULLassert(pq);pq-phead NULL;pq-ptail NULL;pq-size 0; }⭕接口3销毁QueueDestroy 请看代码与注释 //销毁 void QueueDestroy(Queue* pq) {//断言传入指针不为NULLassert(pq);QNode* cur pq-phead;while (cur){QNode* next cur-next;free(cur); //释放cur next;}pq-phead pq-ptail NULL;pq-size 0; }⭕接口4入队列QueuePush 请看代码与注释 //入队列 void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail\n);return;}newnode-data x;newnode-next NULL;if (pq-ptail NULL) //如果没有节点空队列{assert(pq-phead NULL);pq-phead pq-ptail newnode;}else //非空队列{pq-ptail-next newnode;pq-ptail newnode;}pq-size; }⭕接口5出队列QueuePop 请看代码与注释 //出队列 void QueuePop(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));//1、一个节点if (pq-phead-next NULL){free(pq-phead);pq-phead pq-ptail NULL;}//2、多个节点else{//头删QNode* next pq-phead-next;free(pq-phead);pq-phead next;}pq-size--; }⭕接口6取队头数据QueueFront 请看代码与注释 //获取队头数据 QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-phead-data; }⭕接口7取队尾数据QueueBack 请看代码与注释 //获取队尾数据 QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-ptail-data; }⭕接口8获取队列大小QueueSize 请看代码与注释 //获取队列大小 int QueueSize(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-size; }⭕接口9判空QueueEmpty 请看代码与注释 //判空 bool QueueEmpty(Queue* pq) {assert(pq);//return pq-phead NULL pq-ptail NULL;return pq-size 0; }四、完整代码 Queue.h #pragma once #includestdio.h #includestdlib.h #includeassert.h #includestdbool.htypedef int QDataType;//队列链表每个节点 typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode;//整个队列链表 typedef struct Queue {QNode* phead;QNode* ptail;int size; }Queue;//初始化 void QueueInit(Queue* pq); //销毁 void QueueDestroy(Queue* pq); //入队列 void QueuePush(Queue* pq, QDataType x); //出队列 void QueuePop(Queue* pq); //获取队头数据 QDataType QueueFront(Queue* pq); //获取队尾数据 QDataType QueueBack(Queue* pq); //获取队列大小 int QueueSize(Queue* pq); //判空 bool QueueEmpty(Queue* pq);Queue.c #includeQueue.h//初始化 void QueueInit(Queue* pq) {assert(pq);pq-phead NULL;pq-ptail NULL;pq-size 0; }//销毁 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; }//入队列 void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail\n);return;}newnode-data x;newnode-next NULL;if (pq-ptail NULL){assert(pq-phead NULL);pq-phead pq-ptail newnode;}else{pq-ptail-next newnode;pq-ptail newnode;}pq-size; }//出队列 void QueuePop(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));//1、一个节点if (pq-phead-next NULL){free(pq-phead);pq-phead pq-ptail NULL;}//2、多个节点else{//头删QNode* next pq-phead-next;free(pq-phead);pq-phead next;}pq-size--; }//获取队头数据 QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-phead-data; }//获取队尾数据 QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-ptail-data; }//获取队列大小 int QueueSize(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-size; }//判空 bool QueueEmpty(Queue* pq) {assert(pq);//return pq-phead NULL pq-ptail NULL;return pq-size 0; }Test.c #includeQueue.h//入队列测试 void TestQueue1() {Queue q;QueueInit(q);QueuePush(q, 1);QueuePush(q, 2);QueuePush(q, 3);QueuePush(q, 4);while (!QueueEmpty(q)){printf(%d , QueueFront(q));QueuePop(q);}printf(\n);QueueDestroy(q); }//测试 void TestQueue2() {Queue q;QueueInit(q);QueuePush(q, 1);QueuePush(q, 2);printf(Size:%d\n, QueueSize(q));while (!QueueEmpty(q)){printf(%d , QueueFront(q));QueuePop(q);}printf(\n);QueueDestroy(q); }int main() {//TestQueue1();//TestQueue2();return 0; }这期内容相对比较简单希望烙铁们可以理解消化哦 总结 以上就是 【数据结构】队列—C语言版 的全部内容啦 本文章所在【数据结构与算法】专栏感兴趣的烙铁可以订阅本专栏哦 前途很远也很暗但是不要怕不怕的人面前才有路。 小的会继续学习继续努力带来更好的作品 创作写文不易还多请各位大佬uu们多多支持哦
http://www.pierceye.com/news/404597/

相关文章:

  • 个人虚拟机做网站设计实例网站
  • 衡阳企业网站wordpress置顶文章顺序
  • 网站建设宗旨是指郑州有名的做网页的公司
  • 怎么0成本做网站企业网站如何设计网页
  • 做韦恩图网站课程分销平台
  • html5网站建设中企业整站推广
  • 织梦网站打开速度慢做抢单软件的网站
  • 51单片机可以做网站怎么建设游戏试玩平台网站
  • 汕头网站建设方案维护wordpress百度熊掌
  • 牛街网站建设产品vi设计都包括什么
  • 网站需要多大宽带网站发展的方向
  • 陈光锋网站运营推广新动向故城建设银行网站
  • 备案后网站可以改名吗临颖网站建设
  • 临沭县建设局官方网站怎样做外贸网站推广
  • 手机网站支付一个简单的网页代码带图片
  • 向公司申请请做网站广州网站推广教程
  • 用QQ群做网站排名交互式网站app
  • 正规免费发布信息网站国外网站界面
  • 浏览国外网站 dns网店运营推广方案
  • wordpress弹幕视频插件广西seo搜索引擎优化
  • 网站开发与维护工资多少网络公司排名兴田德润
  • wordpress主题ux壹搜网站建设优化排名
  • 试剂产品商城网站建设杭州网站现场备案
  • 高唐企业建网站服务商wordpress google
  • 重庆网站开发商城最近新闻有哪些
  • 电商网站设计线路图有哪些网络推广平台
  • 海门市建设局网站科技与应用
  • 北京做网站s免费做app网站有哪些
  • 免费制作网页的网站网络营销师报名官网
  • 长沙网站制作好公司网络服务模型