队列的相关知识

目录

 创建

初始化

销毁

头插

尾删

取出头

取出尾

数字个数

判空


队列的性质与特征

性质:一种先进先出的线性表 

特征:FIFO(先进先出)

实现:用数组和链表的都可以

例子:在生产者消费者模型用到了循环链表

模型:未来曲风队列是满的还是不满的,我们多加一个空间保证rear+1是front

 创建

typedef  struct Queue//避免老是传二级指针
{QNode* phead;QNode* tail;int size;}Queue;typedef struct QNode
{struct QNode* next;DataType val;
}QNode;

初始化

void QueueInit(Queue* p)
{assert(p);p->phead = p->tail=NULL;p->size = 0;
}

销毁

void QueueDestroy(Queue* p)
{assert(p);QNode* cur = p->phead;while (cur){free(cur);cur = cur->next;}QueueInit(p);
}

头插

void QPush(Queue* p, DataType x)//插入先创建空间
{assert(p);QNode* newNode = (QNode*)malloc(sizeof(QNode));if (newNode = NULL){printf("malloc failed");return;}newNode->next = NULL;newNode->val = x;if (p->phead == NULL){p->phead = p->tail = newNode;}else{p->tail->next = newNode;	p->tail = newNode;}p->size++;
}

尾删

void Qpop(Queue* p)
{assert(p);assert(p->size);if (p->phead->next = NULL){free(p->phead);p->phead = p->tail = NULL;}else{QNode* next = p->phead->next;free(p->phead);p->phead = next;}p->size--;
}

取出头

DataType QueueFront(Queue* p)
{assert(p);assert(p->phead);return p->phead->val;
}

取出尾

DataType QueueBack(Queue* p)
{assert(p);assert(p->tail);return p->tail->val;
}

数字个数

int QSize(Queue* p)
{assert(p);return p->size;
}

判空

bool QueueEmpty(Queue* p)
{assert(p);if (p->size == 0)return true;elsereturn false;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

夏天到了,用这两款软件,悄悄惊艳所有人!

哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 夏天来了,又到了“露肉”的季节,或许大家会为了身材烦恼,即便有运动意愿却苦于健身计划和时间上安排,也没有合适的免费软件。 别担心&a…

RpcRrovider分发rpc服务(OnMessage和Closure回调)

目录 1.完善rpcprovider.cc的OnConnection 2.完善rpcprovider.cc的OnMessage 3.完整rpcprovider.h 4.完整rpcprovider.cc 这篇文章主要完成,protobuf实现的数据序列化和反序列化。 1.完善rpcprovider.cc的OnConnection rpc的请求是短连接的,请求一次…

CICD持续集成(Jenkins+Git+Gogs)

1.Jenkins Jenkins 是一个开源的、用于构建和自动化软件开发流程的持续集成和交付工具。它提供了一个可扩展的平台,用于构建、测试和部署软件项目。通过使用 Jenkins,开发团队可以实现持续集成和交付,自动化构建和测试过程,提高软…

Web缓存代理和CDN 内容分发网络

目录 1.WEB缓存代理 1.1 WEB缓存代理作用 1.2 常见WEB缓存代理 1.3 Nginx 配置 缓存代理 2. CDN内容分发网络 1.WEB缓存代理 1.1 WEB缓存代理作用 存储一些之前给访问过的,且可能要被再次访问的静态网页资源对象,使客户端可以直接从缓存代理服务器…

【代码随想录训练营】【Day 60】【动态规划-13】| Leetcode 647, 516

【代码随想录训练营】【Day 60】【动态规划-13】| Leetcode 647, 516 需强化知识点 动态规划-回文系列 题目 647. 回文子串 注意sum(dp)不行j的遍历要倒序,并且 for j in range(i, n): class Solution:def countSubstrings(self, s: st…

C++Primer Plus 第十四章代码重用:14.4.7 成员模板

CPrimer Plus 第十四章代码重用 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:CPrimer Plus 第十四章代码重用:14.4.7 成员模板 提示:写完文章后,目录可以自动生成,如…

KBL410-ASEMI智能AI专用整流桥KBL410

编辑:ll KBL410-ASEMI智能AI专用整流桥KBL410 型号:KBL410 品牌:ASEMI 封装:KBL-4 正向电流(Id):4A 反向耐压(VRRM):1000V 正向浪涌电流:2…

【计算机毕业设计】基于微信小程序的电子购物系统的设计与实现【源码+lw+部署文档】

包含论文源码的压缩包较大,请私信或者加我的绿色小软件获取 免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

Python逻辑控制语句 之 判断语句--if语句的基本结构

1.程序执行的三大流程 顺序 分支(判断) 循环 2.if 语句的介绍 单独的 if 语句,就是 “如果 条件成⽴,做什么事” 3.if 语句的语法 if 判断条件: 判断条件成立,执行的代码…

Python转换图片为BITMAP供OLED屏幕显示

最近在玩ESP32,外接了一个0.96寸的oled屏幕,不想找取模软件了,直接gpt生成代码,小改一下直接用了。 字体下载地址:https://fonts.google.com/selection?queryNotoSans from PIL import Image, ImageDraw, ImageFont…

防止多次点击,vue的按钮上做简易的防抖节流处理

话不多说,上个视频,看看是不是你要的效果 防抖节流 1.创建一个directive.js // directive.js export default {install(Vue) {// 防重复点击(指令实现)Vue.directive(repeatClick, {inserted(el, binding) {el.addEventListener(click, () > {if (!el.disabled) {el.disabl…

Leetcode 450:删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先…

6月29日,每日信息差

第一、位于四川省绵阳市的中广核质子治疗装备制造基地正式通过竣工验收,为全球装机数量和治疗患者数量最多的国际领先质子治疗系统全面国产化奠定了坚实基础。质子治疗作为目前全球最尖端的肿瘤放射治疗技术之一,与传统放疗技术相比,质子治疗…

C#微信预约挂号系统全套源码,适用于各级公立和民营医院,与院内his、lis、pacs系统对接。

C#微信预约挂号系统源码,团队自主研发,三甲医院应用多年,系统稳定,功能齐全,支持二次开发,项目使用。 微信预约挂号系统可以让患者足不出户就可以利用微信进行在线挂号,实现分时段就诊&#xff…

安装llama_factory

第一版: nvidia-smigit clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml pip install --upgrade huggingface_hub llamafactory-cli webui llamafactory-cli webui -…

【LLM 评估】GLUE benchmark:NLU 的多任务 benchmark

论文:GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding ⭐⭐⭐⭐ arXiv:1804.07461, ICLR 2019 Site: https://gluebenchmark.com/ 文章目录 一、论文速读二、GLUE 任务列表2.1 CoLA(Corpus of Linguistic Accep…

java输出小写的a-z以及大写的Z-A

如果是C语言,可以直接使用格式化输出中的%c 但是Java没有,所以可以1、强制类型转化;2、for循环递增变量中直接定义为char类型 方法一:强制类型转化 //2024.06.29 public class Homework07{public static void main(String[] arg…

卷积、池化小记

卷积和池化是深度学习中,特别是在卷积神经网络(CNN)中非常重要的两个概念。下面我将分别详细解释卷积和池化的定义、作用以及常见的类型。 卷积(Convolution) 1. 定义 卷积是通过两个函数f和g生成第三个函数的一种数…

在晋升受阻或遭受不公待遇申诉时,这样写是不是好一些?

在晋升受阻或遭受不公待遇申诉时,这样写是不是好一些? 在职场中,晋升受阻或遭受不公待遇是员工可能面临的问题之一。面对这样的情况,如何撰写一份有效的申诉材料,以维护自己的合法权益,就显得尤为重要。#李…

STM32CUBEMX配置USB虚拟串口

STM32CUBEMX配置USB虚拟串口 cubemx上默认配置即可。 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 配置完后生成工程,主要就是要知道串口的收发接口就行了。 发送:CDC_Transmit_FS(),同时记得包含头文件#include “…