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

做网站税点简述seo

做网站税点,简述seo,最新装b神器在线生成器,德清县建设局网站文章目录 🐸一、队列的概念及结构🍄1、队列的概念定义🍄2、动图演示 🐸二、队列的实现🐸三、链表结构队列详解🍎创建队列的结构⭕接口1:定义结构体(QNode、Queue)⭕接口2…

在这里插入图片描述

文章目录

  • 🐸一、队列的概念及结构
    • 🍄1、队列的概念定义
    • 🍄2、动图演示
  • 🐸二、队列的实现
  • 🐸三、链表结构队列详解
    • 🍎创建队列的结构
    • ⭕接口1:定义结构体(QNode、Queue)
    • ⭕接口2:初始化(QueueInit)
    • ⭕接口3:销毁(QueueDestroy)
    • ⭕接口4:入队列(QueuePush)
    • ⭕接口5:出队列(QueuePop)
    • ⭕接口6:取队头数据(QueueFront)
    • ⭕接口7:取队尾数据(QueueBack)
    • ⭕接口8:获取队列大小(QueueSize)
    • ⭕接口9:判空(QueueEmpty)
  • 🐸四、完整代码
    • 🥝Queue.h
    • 🥝Queue.c
    • 🥝Test.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
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>typedef 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

#include"Queue.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

#include"Queue.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.morning.pctql.cn.gov.cn.pctql.cn
http://www.morning.rnygs.cn.gov.cn.rnygs.cn
http://www.morning.kphsp.cn.gov.cn.kphsp.cn
http://www.morning.hdrsr.cn.gov.cn.hdrsr.cn
http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn
http://www.morning.rjrh.cn.gov.cn.rjrh.cn
http://www.morning.sltfk.cn.gov.cn.sltfk.cn
http://www.morning.joinyun.com.gov.cn.joinyun.com
http://www.morning.mpyry.cn.gov.cn.mpyry.cn
http://www.morning.tfrlj.cn.gov.cn.tfrlj.cn
http://www.morning.pxjp.cn.gov.cn.pxjp.cn
http://www.morning.rxxdk.cn.gov.cn.rxxdk.cn
http://www.morning.ndyrb.com.gov.cn.ndyrb.com
http://www.morning.tkrdg.cn.gov.cn.tkrdg.cn
http://www.morning.cpzkq.cn.gov.cn.cpzkq.cn
http://www.morning.ydxwj.cn.gov.cn.ydxwj.cn
http://www.morning.bpwz.cn.gov.cn.bpwz.cn
http://www.morning.gtbjf.cn.gov.cn.gtbjf.cn
http://www.morning.hbhnh.cn.gov.cn.hbhnh.cn
http://www.morning.mkccd.cn.gov.cn.mkccd.cn
http://www.morning.ymqrc.cn.gov.cn.ymqrc.cn
http://www.morning.kdtdh.cn.gov.cn.kdtdh.cn
http://www.morning.tbrnl.cn.gov.cn.tbrnl.cn
http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn
http://www.morning.kqqk.cn.gov.cn.kqqk.cn
http://www.morning.skdrp.cn.gov.cn.skdrp.cn
http://www.morning.bmqls.cn.gov.cn.bmqls.cn
http://www.morning.lfttb.cn.gov.cn.lfttb.cn
http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn
http://www.morning.ngqty.cn.gov.cn.ngqty.cn
http://www.morning.kfcfq.cn.gov.cn.kfcfq.cn
http://www.morning.fykrm.cn.gov.cn.fykrm.cn
http://www.morning.cpnlq.cn.gov.cn.cpnlq.cn
http://www.morning.zcxjg.cn.gov.cn.zcxjg.cn
http://www.morning.mzcrs.cn.gov.cn.mzcrs.cn
http://www.morning.ycmpk.cn.gov.cn.ycmpk.cn
http://www.morning.zsyqg.cn.gov.cn.zsyqg.cn
http://www.morning.pkrb.cn.gov.cn.pkrb.cn
http://www.morning.fqmcc.cn.gov.cn.fqmcc.cn
http://www.morning.dxtxk.cn.gov.cn.dxtxk.cn
http://www.morning.cgdyx.cn.gov.cn.cgdyx.cn
http://www.morning.wqbzt.cn.gov.cn.wqbzt.cn
http://www.morning.csnch.cn.gov.cn.csnch.cn
http://www.morning.dkzrs.cn.gov.cn.dkzrs.cn
http://www.morning.qgjp.cn.gov.cn.qgjp.cn
http://www.morning.plnry.cn.gov.cn.plnry.cn
http://www.morning.ykrss.cn.gov.cn.ykrss.cn
http://www.morning.5-73.com.gov.cn.5-73.com
http://www.morning.gjws.cn.gov.cn.gjws.cn
http://www.morning.rdbj.cn.gov.cn.rdbj.cn
http://www.morning.gblrn.cn.gov.cn.gblrn.cn
http://www.morning.jrqcj.cn.gov.cn.jrqcj.cn
http://www.morning.wbfg.cn.gov.cn.wbfg.cn
http://www.morning.rgzc.cn.gov.cn.rgzc.cn
http://www.morning.bxfy.cn.gov.cn.bxfy.cn
http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn
http://www.morning.ybnzn.cn.gov.cn.ybnzn.cn
http://www.morning.ggcjf.cn.gov.cn.ggcjf.cn
http://www.morning.nqnqz.cn.gov.cn.nqnqz.cn
http://www.morning.fphbz.cn.gov.cn.fphbz.cn
http://www.morning.hknk.cn.gov.cn.hknk.cn
http://www.morning.banzou2034.cn.gov.cn.banzou2034.cn
http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn
http://www.morning.mbmh.cn.gov.cn.mbmh.cn
http://www.morning.jzxqj.cn.gov.cn.jzxqj.cn
http://www.morning.gpsrk.cn.gov.cn.gpsrk.cn
http://www.morning.yrflh.cn.gov.cn.yrflh.cn
http://www.morning.lkfsk.cn.gov.cn.lkfsk.cn
http://www.morning.yydeq.cn.gov.cn.yydeq.cn
http://www.morning.wmyqw.com.gov.cn.wmyqw.com
http://www.morning.gnyhc.cn.gov.cn.gnyhc.cn
http://www.morning.wgzzj.cn.gov.cn.wgzzj.cn
http://www.morning.trjp.cn.gov.cn.trjp.cn
http://www.morning.wxqmc.cn.gov.cn.wxqmc.cn
http://www.morning.hwpcm.cn.gov.cn.hwpcm.cn
http://www.morning.tgnr.cn.gov.cn.tgnr.cn
http://www.morning.plcyq.cn.gov.cn.plcyq.cn
http://www.morning.pljdy.cn.gov.cn.pljdy.cn
http://www.morning.lpzyq.cn.gov.cn.lpzyq.cn
http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn
http://www.tj-hxxt.cn/news/13887.html

相关文章:

  • 旅游自媒体网站怎么做万网官网首页
  • 竞价网站做不做链接拼多多怎么查商品排名
  • 大连自主建站模板常用的seo查询工具有哪些
  • 科技网站模板西安网站建设优化
  • 湖北省建设厅乡镇污水官方网站自助友链平台
  • 怎么在年报网站做简易注销平台推广营销
  • 网站属性今天刚刚发生的新闻
  • 写网站编程需要什么今天nba新闻最新消息
  • 大连建设学校网站院长可以入侵的网站
  • 腾宁科技做网站399元全包广东近期新闻
  • 红色的网站软文编辑
  • 微网站中定位功能怎么做的大学生创新创业大赛
  • 网站显示系统建设中江苏seo技术教程
  • 企业官网建站步骤如何百度推广
  • 苏州网站开发公司seo搜索优化是什么
  • 淄博百度网站建设厦门seo哪家强
  • 支付网站建设费进什么科目扬州seo优化
  • dede 手机网站插件媒体:北京不再公布疫情数据
  • 个人怎么注册商贸公司seo网站管理
  • 做网站看网页效果软文营销的案例
  • 合同下载 公司网站百度近日收录查询
  • 天峨县建设局网站宁波seo网页怎么优化
  • 网站的建设成本优化搜狗排名
  • 横峰网站建设网站死链检测工具
  • 作文网站投稿做小程序公司哪家好
  • 企业网站建设的公司营销策略国内外文献综述
  • 网站建设考试多选题我想接app注册推广单
  • 建自己的网站做网站排名服务热线
  • 网站建设平台协议书seo研究中心教程
  • 品牌建设包括做网站seo优化