数据结构(c):队列


目录
🍺0.前言
1.什么是队列
2. 队列的实现
2.1定义队列节点
2.2定义队列
2.3队尾入队列
2.4判断队列是否为空
2.5队头出队列
2.6 队列首元素
2.7队尾元素
2.8队列内的元素个数
2.9销毁队列
3.试运行
💎4.结束语
🍺0.前言
言C之言,聊C之识,以C会友,共向远方。各位博友的各位你们好啊,这里是持续分享数据结构知识的小赵同学,今天要分享的数据结构知识是队列,在这一章,小赵将会向大家展开聊聊队列。✊
1.什么是队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头
队列图片
其实上面说了很多,但其实队列很简单,正如它的名字一样,队列就是排队。
总结一下规律就是先进先出,就跟我们排队一样,谁排第一,谁的请求就可以先被执行。
2. 队列的实现
那么队列该怎么实现呢,其实也就前面两个方式,一个数组,一个链表,这里小赵并不推荐用数组,因为如果我们用数组的话,一直出头元素,会让我们很难确定这个时候我们的对头在哪里。所以这里小赵更推荐使用链表,因为链表可以使用我们的next的指针去找到下一个头。
2.1定义队列节点
typedef int QDataType;
//创建一个节点
typedef struct QNode
{QDataType data;struct QNode* next;
}QNode;
//队列
typedef struct Queue
{QNode* front;//队头QNode* rear;//队尾int capacity;//队列中的元素
}Queue;
2.2定义队列
//定义队列
void Queueinit(Queue*Qhead)
{Qhead->front=NULL;Qhead->rear = Qhead->front;Qhead->capacity = 0;
}
2.3队尾入队列
//队尾入队列
void QueuePush(Queue* q, QDataType data)
{QNode*newnode= (QNode*)malloc(sizeof(QNode));//创建一个新节点newnode->next = NULL;newnode->data = data;if (q->front == NULL)//如果队列里面没有元素{q->front = newnode;q->front->next = NULL;q->rear = q->front;//队尾和队首在一个位置}else{q->rear->next = newnode;q->rear = newnode;//移动duiwei}q->capacity++;//数量+1
}
2.4判断队列是否为空
int QueueEmpty(Queue* q)
{return q->capacity == 0;//如果为空返回非零,不为空返回零
}
2.5队头出队列
void QueuePop(Queue* q)
{if (QueueEmpty(q)) return;//如果为空就返回QNode* node = q->front;//保留头节点if (q->front->next == NULL)//如果只有一个数{q->front = NULL;q->rear = NULL;}else{q->front = q->front->next;//移动队首}free(node);//释放原队首node = NULL;q->capacity--;
}
2.6 队列首元素
QDataType QueueFront(Queue* q)
{if (QueueEmpty(q)) return;//如果为空就返回return q->front->data;
}
2.7队尾元素
QDataType QueueBack(Queue* q)
{if (QueueEmpty(q))return;return q->rear->data;
}
2.8队列内的元素个数
int QueueSize(Queue* q)
{return q->capacity;
}
2.9销毁队列
void QueueDestroy(Queue* q)
{while (q->front)//遍历队列{QNode* node = q->front;q->front = q->front->next;free(node);node = NULL;}q->rear = NULL;free(q);//要出去后手动制空
} 3.试运行

💎4.结束语
好了小赵今天的分享就到这里了,如果大家有什么不明白的地方可以在小赵的下方留言哦,同时如果小赵的博客中有什么地方不对也希望得到大家的指点,谢谢各位家人们的支持。你们的支持是小赵创作的动力,加油。
如果觉得文章对你有帮助的话,还请点赞,关注,收藏支持小赵,如有不足还请指点,小赵及时改正,感谢大家支持!!!
相关文章:
数据结构(c):队列
目录 🍺0.前言 1.什么是队列 2. 队列的实现 2.1定义队列节点 2.2定义队列 2.3队尾入队列 2.4判断队列是否为空 2.5队头出队列 2.6 队列首元素 2.7队尾元素 2.8队列内的元素个数 2.9销毁队列 3.试运行 💎4.结束语 🍺0.前言 言C之…...
Vue单页面应用和多页面应用的区别
概念: SPA单页面应用(SinglePage Web Application),指只有一个主页面的应用,一开始只需要加载一次js、css等相关资源。所有内容都包含在主页面,对每一个功能模块组件化。单页应用跳转,就是切换…...
php扩展
查看扩展: print_r(get_loaded_extensions());判断扩展: if (!extension_loaded(gd)) {if (!dl...
mac电脑如何安装python及环境搭建
(1)进入官网:Download Python | Python.org,根据自己电脑选择python (2)这里我选择的是mac,点击:macos,选择最近版本并点击进入 (3)选择mac版本: (4)点击就可以进入下载: (5)下载好之…...
大数据高级阶段面试题(实时)
1.Kafka的producer如何实现幂等性? ①开启幂等性,将Idempotent设置为true ②将ack设置为-1,确保相同的消息只会发送一次,避免重新发送 2.Kafka的ISR和OSR的作⽤分别是什么? ISR是副本和领导者的数据和状态要保持一致,如果出现…...
Material Studio 计算分子静电力、电荷密度以及差分电荷密度
1.先打开Material Studio导入要计算的分子cif文件或者mol文件,直接Flie-Import 2.高斯几何优化一下结构,参数按照我的设置就行,一般通用,后面出问题再调整 3.点完Run后会跳出很多计算过程,不用管,等他计算完…...
华为鸿蒙系统(Huawei HarmonyOS)
华为鸿蒙系统(华为技术有限公司开发的分布式操作系统) 华为鸿蒙系统(HUAWEI HarmonyOS),是华为公司在2019年8月9日于东莞举行的华为开发者大会(HDC.2019)上正式发布的分布式操作系统。 华为鸿蒙…...
docker jenkins 部署springboot项目
1、创建jenkins容器 1,首先,我们需要创建一个 Jenkins 数据卷,用于存储 Jenkins 的配置信息。可以通过以下命令创建一个数据卷: docker volume create jenkins_data启动 Jenkins 容器并挂载数据卷: docker run -dit…...
记录一个练手的js逆向password
很明显 请求加密了password 全局搜索 有个加密函数(搜不到的可以搜临近的其他的关键字 或者url参数) 搜索的时候一定要仔细分析 我就没有仔细分析 我搞了好久 又是xhr又是hook的(还没hook到) 我当时也是疏忽了 我寻思这个也不是js文件 直到后来 我怎么也找不到 我就猜想 不…...
如何低成本创建个人网站?
目录 前言 网站源代码 虚拟主机或服务器 域名注册或免费二级域名 域名解析 上传源代码压缩包 添加刚刚的域名 成功搭建 失败的解决方案 结语 前言 很多小白都非常想拥有自己的网站,但很多人虽然有了自己的源代码但苦于不知道怎么将其变成所有人都能够访…...
Finder Windows for Mac:双系统窗口,一键切换!
Finder Windows for Mac是一款专为Mac用户设计的实用工具,它模拟了Windows系统的窗口管理功能,让Mac用户也能享受到类似Windows的窗口操作体验。这款软件的主要功能是提供一个浮动面板,帮助用户随时即时访问打开的Finder窗口列表,…...
Hadoop3:集群搭建及常用命令与shell脚本整理(入门篇,从零开始搭建)
一、集群环境说明 1、用VMware安装3台Centos7.9虚拟机 2、虚拟机配置:2C,2G内存,50G存储 3、集群架构设计 从表格中,可以看出,Hadoop集群,主要有2个模块服务,一个是HDFS服务,一个是…...
yolo-world:”目标检测届大模型“
AI应用开发相关目录 本专栏包括AI应用开发相关内容分享,包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…...
vue3 + ts 快速入门(全)
文章目录 学习链接1. Vue3简介1.1. 性能的提升1.2.源码的升级1.3. 拥抱TypeScript1.4. 新的特性 2. 创建Vue3工程2.1. 基于 vue-cli 创建2.2. 基于 vite 创建(推荐)vite介绍创建步骤项目结构安装插件项目结构总结 2.3. 一个简单的效果Person.vueApp.vue …...
vue2实现面包屑功能
目录 1. store/index.js 2. router/index.js 3. Header.vue 在Vue 2中实现面包屑导航是一种常见的前端实践,它可以帮助用户了解当前页面在网站结构中的位置,并快速导航到上一级或根目录。以下是使用Vue 2实现面包屑导航的基本步骤: 1. st…...
helm安装 AWS Load Balancer Controller
1、创建AmazonEKSLoadBalancerControllerRole角色 亚马逊文档 创建文档 2)、使用 eksctl 创建 IAM 角色 a、安装eksctl eksctl安装文档 使用以下命令下载并提取最新版本的 eksctl curl --silent --location "https://github.com/weaveworks/eksctl/releases/l…...
贪吃蛇大作战(C语言--实战项目)
朋友们!好久不见。经过一段时间的沉淀,我这篇文章来和大家分享贪吃蛇大作战这个游戏是怎么实现的。 (一).贪吃蛇背景了解及效果展示 首先相信贪吃蛇游戏绝对称的上是我们00后的童年,不仅是贪吃蛇还有俄罗斯⽅块&…...
谷歌确认:链接并不那么重要
谷歌的 Gary Illyes 在最近的一次搜索营销会议上证实,谷歌只需要很少的链接,这为出版商需要关注其他因素提供了越来越多的证据。Gary 在推特上证实了他确实说过这些话。 排名链接的背景 20 世纪 90 年代末,搜索引擎发现链接是验证网站权威性…...
python基础--修饰器
修饰器(语法糖) 在python中函数实际上就是一个对象 def outer(x):def inner(y):return x yreturn innerprint(outer(6)(5))def double(x):return x * 2 def triple(x):return x * 3def calc_number(func, x):print(func(x))calc_number(double, 3) calc_number(triple, 3)函…...
6. Z 字形变换
题目描述 给你一个字符串s和行数numRows,把s字符串按照z字形重新排列。 再从左往右进行读取,返回读取之后的字符串。 本题是找规律,但是没有找出来 解题思路 要想解出来该题,在进行z字变换的时候,我们把字符串的下…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...
