用c语言实现队列(FIFO)

C语言实现FIFO代码 C语言实现fifo 阅读详情

队列是一种先进先出的数据结构,它的存储表示方式有两种:顺序存储和链式存储

顺序存储由于要考虑假溢出的情况,所以采用循环队列形式:


c语言实现:

#define QUEUESIZE 100 //定义队列的大小
typedef int DataType; //定义队列元素类型

typedef struct
{
	DataType data[QUEUESIZE];
	int front; //指向队头的索引,这个所指的空间不存放元素
	int tail; //指向队尾的索引,存放最后一个元素
}CircleQueue;

bool InitCircleQueue(CircleQueue *pCQ)
{
	pCQ = (CircleQueue *)malloc(sizeof(CircleQueue));
	if (pCQ == NULL)
		return false;
	else
	{
		pCQ->front = 0;
		pCQ->tail = 0;
		return true;
	}
}

bool IsQueueEmpty(CircleQueue *pCQ)
{
	if (pCQ->front == pCQ->tail)
		return true;
	else
		return false;
}

bool IsQueueFull(CircleQueue *pCQ)
{
	if ((pCQ->tail + 1) % QUEUESIZE == pCQ->front)
		return true;
	else
		return false;
}

bool PushElement(CircleQueue *pCQ, DataType dData)
{
	if (IsQueueFull(pCQ))
		return false;

	pCQ->tail = (pCQ->tail + 1) % QUEUESIZE;
	pCQ->data[pCQ->tail] = dData;
	return true;
}

bool PopElement(CircleQueue *pCQ, DataType *pData)
{
	if (IsQueueEmpty(pCQ))
		return false;

	pCQ->front = (pCQ->front + 1) % QUEUESIZE;
	*pData = pCQ->data[pCQ->front];
	return true;
}

bool GetHeadElement(CircleQueue *pCQ, DataType *pData)
{
	if (IsQueueEmpty(pCQ))
		return false;

	*pData = pCQ->data[(pCQ->front + 1) % QUEUESIZE];
	return true;
}

队列的链式存储结构简称为链队


c语言实现:

typedef int DataType;

typedef struct qnode
{
	DataType data;
	struct qnode *next;
}Node, *pNode;

typedef struct 
{
	pNode front;
	pNode rear;
}LinkQueue;

bool InitLinkQueue(LinkQueue *pLQ)
{
	pNode p;
	p = (pNode)malloc(sizeof(Node));
	if (p == NULL)
		return false;
	else
	{
		p->next = NULL;
		LQ->front = p;
		LQ->rear = p;
		return true;
	}
}

bool IsQueueEmpty(LinkQueue *pLQ)
{
	if (pLQ->front == pLQ->rear)
		return true;
	else
		return false;
}

bool PushElement(LinkQueue *pLQ, DataType dData)
{
	pNode p;
	p = (pNode)malloc(sizeof(Node));
	if (p == NULL)
		return false;

	p->data = dData;
	p->next = NULL;
	pLQ->rear->next = p;
	pLQ->rear = p;
	return true;
}

bool PopElement(LinkQueue *pLQ, DataType *pData)
{
	pNode p;
	if (IsQueueEmpty(pLQ))
		return false;

	p = pLQ->front->next;
	*pData = p->data;
	pLQ->front->next = p->next;
	if (pLQ->front->next == NULL)
		pLQ->rear = pLQ->front;

	free(p)
	return true;
}

bool GetHeadElement(LinkQueue *pLQ, DataType *pData)
{
	if (IsQueueEmpty(pLQ))
		return false;

	*pData = pLQ->front->next->data;
	return true;
}








C语言实现一个简易的环形FIFO 设计一个环形FIFO缓冲区,用于存储原始数据。环形FIFO缓冲区最大有10个节点,每个节点有200个原始数据,即200个unsigned int类型的数据。其中,包括写FIFO函数,读FIFO函数,删除某节点函数,删除整个FIFO函数等。 阅读详情

相关推荐

C语言实现先进先出(FIFO)队列

入队操作将元素添加到队列的末尾,而出队操作则从队列的头部移除元素。在计算机科学中,队列是一种常见的数据结构,遵循先进先出(First-In-First-Out,FIFO)的原则。在本文中,我将介绍如何使用C语言实现一个简单的FIFO队列,并提供相应的源代码。你可以根据需要扩展该队列的功能,例如增加动态分配内存的能力,实现循环队列等。如果队列为空,则无法出队,并打印相应的提示信息。如果队列已满,则无法入队,并打印相应的提示信息。如果队列为空,则无法获取头部元素,并打印相应的提示信息。数组用于存储队列的元素,

ByteJolt的博客 957

分享一款基于C语言实现的FIFO模块

关注+星标公众号,不错过精彩内容作者 | strongerHuang微信公众号|strongerHuangFIFO在嵌入式应用的非常广泛,可以说有数据收发的地方,基本就有FIFO的存在,今天给大家分享一款基于C语言实现的FIFO模块:xqueue.1. 为什么需要FIFOFIFO 是First-In First-Out的缩写,它是一个具有先入先出特点的缓冲区。可以理解成一个大的水池,水对应数据...

strongerHuang 2069

C语言实现先进先出(FIFO)队列

先进先出(FIFO)队列是一种常见的数据结构,它遵循“先进先出”的原则,即最先进入队列的元素最先被取出。在实际应用中,FIFO队列经常用于缓存、消息队列等场景。C语言可以方便地实现FIFO队列。通过上述代码,我们可以很容易地实现FIFO队列,并进行入队和出队操作。C语言实现先进先出(FIFO)队列。

HackVibe的博客 850

C语言实现循环缓冲fifo及总结

**循环缓冲fifo是先进先出的。生产者和消费者都只有一个,linux系统下使用提供了一种免锁的机制,处理时不用加锁。**UART下收发fifo主要是解决收发中断过于频繁,会导致CPU效率不高。 ...

weixin_42648229的博客 2134

cadence Virtuoso ADE原理图库中的VCVS(压控电压源)使用

Symbol: vcvs (Voltage Controlled Voltage Source) Vop−Von=egain⋅(Vip−Vin)V_{op}-V_{on}=egain\cdot(V_{ip}-V_{in})Vop​−Von​=egain⋅(Vip​−Vin​) 所以可以得出 ⟹Vop=egain⋅(Vip−Vin)+Von\Longrightarrow V_{op}=egain\cdot(V_{ip}-V_{in})+V_{on}⟹Vop​=egain⋅(Vip​−Vin​)+Von​ 使

大学生视野 2万+

OnePlus救砖指南:线刷包与OTA全量包实战解析

本文详细解析了OnePlus手机救砖的两种核心方法:线刷包与OTA全量包。针对手机变砖的不同状况(如黑屏、能进Recovery等),文章提供了清晰的判断标准和对应的实战操作指南。重点阐述了线刷包作为终极救砖手段的底层原理与详细步骤,并对比了OTA全量包作为温和修复方案的使用场景与卡刷流程,旨在帮助用户安全、有效地恢复手机系统。

weixin_28312391的博客 1318

c语言链表和fifo,FIFO 队列的链表和数组实现

FIFO 队列的链表和数组实现数据结构FIFO (First-in, First-out,先进先出)队列:当执行delete操作时删除那些呆在队列中时间最长的元素。FIFO 队列是这样一个ADT,包含两个基本操作:插入(put)一个新的项、删除(get)一个最早插入的项。一、FIFO队列的链表实现FIFO 队列和下堆栈的区别在于新项的插入是在尾部,而不是在头部。因此实现程序要保存一个指向链表最后一...

weixin_34274163的博客 738

STM32N6570-DK ISP调试

将下载线接入STLINK V3EC接口,将BOOT1拨码拨至右边,即将其置为H,上电或已经上电的按复位,打开STM32CubeProgrammer,设置start address:0x70000000。板子消耗电流较大,即使缩短数据线接了USB供电依然不能正常点亮显示屏,最终通过板上CN2端子加了外部5V供电,仍然需要560mA的外部电流。3.烧录bin文件:STM32N6_ISP_IQTune_App_revC01-v1.1.0-trusted.bin。

liu的博客 1065

C语言实现的通用FIFO先进先出队列

C语言实现的通用FIFO先进先出队列 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了一套使用C语言实现的通用FIFO(先进先出)队列解决方案。该队列支持动态创建、数据入队和数据出队等基本操作,为开发者提供了一个简单、高效的数据结构。 功能 创建队列:通过FIFO_Creat函数创建一个指定节点最大数量和节点大小的FIFO队列。 数据入队:通过FIFO_Pus...

gitblog_06799的博客 492

IAR9.X半主模式异常解析:为何硬件复位后仍陷调试状态?

本文深入解析了IAR 9.X半主模式异常问题,探讨了硬件复位后MCU仍陷调试状态的原因及解决方案。通过分析半主模式工作机制,提供了禁用半主功能、重写低级IO函数等具体方法,并给出了版本兼容性处理和调试与量产配置分离的优化建议,帮助开发者有效解决复位异常问题。

oo7890的博客 605

Python爬虫实战:用Selenium+ChromeDriver批量抓取政府网站政策文件(附完整代码)

本文详细介绍了使用Python的Selenium和ChromeDriver进行政府网站政策文件批量抓取的实战技巧。从环境配置、动态页面元素定位到分页机制破解和反爬虫策略,提供了完整的解决方案和代码示例,帮助开发者高效获取结构化政策数据。

weixin_42531710的博客 266

c 语言实现fifo算法,FIFO队列算法的C程序实现

#include "string.h"#include"Queue.h"/******************************************************************************** 函数名称: QueueInit* 说 明: FIFO队列初始化* 输入参数: pdI_Queue 要初始化的队列* pdI_Prmt 队...

weixin_29353431的博客 879

Flutter框架GetX从入门到精通第二篇:路由管理-告别繁琐的Navigator

Flutter框架GetX从入门到精通第二篇:告别繁琐的Navigator。本系列将带你从零开始,一步步掌握 GetX 框架的核心功能与实战技巧。

鹏多多的博客 170

c语言实现循环数组fifo,单片机的FIFO(先入先出)循环队列实现

//////////////////////////////////////////////////////////// 文件:config.h//////////////////////////////////////////////////////////#ifndef __CONFIG_H#define __CONFIG_H//这一段无需改动//This segment should not...

weixin_36296063的博客 1214

AI 模型优化与部署秘籍:从理论到实战

本文系统介绍了AI模型优化与部署的关键技术。模型剪枝通过去除冗余参数减小模型规模,量化技术降低计算精度以提升效率,蒸馏方法实现知识从大模型到小模型的迁移。TensorRT通过层融合和精度校准加速GPU推理,ONNX格式实现跨框架模型转换,TFLite则优化移动端部署。这些技术共同解决了AI模型在资源受限环境下的部署难题,显著提升了模型运行效率,为AI应用落地提供了重要支撑。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 246

使用 MATLAB/Simulink + Reinforcement Learning Toolbox 构建一个基于强化学习的永磁同步电机(PMSM)自适应控制仿真系统

随着人工智能(AI)技术的快速发展,强化学习(Reinforcement Learning, RL)在控制系统中的应用日益广泛。在电机控制领域,传统的PID控制虽然成熟稳定,但在面对非线性、时变、不确定负载等复杂工况时,其控制性能可能受限。而强化学习通过与环境的交互学习,能够实现在线自适应控制策略优化,显著提升系统的鲁棒性与响应速度。本教程将带你使用构建一个基于强化学习的永磁同步电机(PMSM)自适应控制仿真系统,实现从控制策略设计、环境建模、训练到仿真的全过程。当前转速(ω)

amy_mhd的博客 407

队列fifo和lifo C语言数组实现

#define QUEUE_SIZE 20 typedef struct queue{ unsigned int array[QUEUE_SIZE]; /* 队列数组 */ int front; /* 队列首指针 */ int rear; /* 队列尾指针 */ unsigned int counter; /* 队列元素计数 */ } ARRAY_QUEUE_S; /* 数组下标小为前,大为后 0到1后移一位 1到0前移1位*/ /******************************

lala0903的博客 918

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

01 C语言使用链表实现队列(Queue、FIFO)模块

C语言使用链表实现队列(Queue、FIFO)模块

qq582880551的博客 1211

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

用数组实现简易的 FIFO(先进先出)队列(C语言)

从用户的角度来看,队列的内容为 [b, c],其中 b 是队首元素,c 是队尾元素。如果再次调用,则会返回 c,并且 out 将会增加到 3。在这一步之后,尽管 a 已经被“移除”,它仍然存在于 fifo[] 数组中,只是我们不再认为它是队列的一部分,因为 out 指针已经前进到了下一个位置。最终,队列中的有效数据为 b 和 c,分别位于 fifo[1] 和 fifo[2] 中。in 指向下一个可以插入的位置(即索引 3),而 out 指向下一个可以读取的位置(即索引 1)。

weixin_41241810的博客 713

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C语言实现的通用FIFO先进先出队列:为开发者提供高效数据结构

C语言实现的通用FIFO先进先出队列:为开发者提供高效数据结构 去发现同类优质开源项目:https://gitcode.com/ 在软件开发中,数据结构的选择对于程序性能的影响至关重要。C语言实现的通用FIFO先进先出队列,以其高效率和简洁性,成为处理数据流、任务队列等场景的优选方案。 项目介绍 C语言实现的通用FIFO先进先出队列,是一套完全使用C语言编写的队列解决方案。它支持动态创建队列、数据...

gitblog_06703的博客 854

c语言队列实现FIFO

使用c语言实现队列,最多8个数据。

royal_cf的博客 836

FIFO队列 C语言实现

参考了 https://blog.youkuaiyun.com/weixin_30407613/article/details/97446678 添加了读取队列状态函数,并将读取队列状态与对队列的实际操作分离,需要先判断队列是否可操作,然后再对其进行操作,原函数是直接进行操作,然后返回的操作结果。 修改了主函数,对其进行了测试。 Queue.c #include "Queue.h" /*******************************************************************

dssd111的博客 821

c语言 两字节fifo,c语言实现队列fifo

fifo在嵌入式里面用的相当多,一般用到的通讯如iic, spi, uart,都会有一个fifo。fifo实现起来也比较简单,一般就是用一个数组,设置两个指针,读指针和写指针。相比之前的filo实现不同,这里我把错误标志直接设置在了fifo对象里面,这样也方便在应用中使用多个fifo而不会相互干扰。main.c#include #include "cfifo.h"int main(void){st...

weixin_36406678的博客 542

FIFO队列-C语言头文件方式实现

FIFO队列在嵌入式开发中使用的非常广泛,如串口数据接收的场合里面需要用到,这里介绍一个只用.H实现FIFO队列的方法,提供给有需要的朋友使用。 这里调用了一个开关中断内联库函数:__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) { register uint32_t __regPriMask __ASM("primask

xiezhijie01的博客 3829

c语言实现队列fifo

fifo在嵌入式里面用的相当多,一般用到的通讯如iic, spi, uart,都会有一个fifo。fifo实现起来也比较简单,一般就是用一个数组,设置两个指针,读指针和写指针。相比之前的filo实现不同,这里我把错误标志直接设置在了fifo对象里面,这样也方便在应用中使用多个fifo而不会相互...

chuwei4749的博客 925
上一篇: 使用neon内部函数实现8-way de-interleave
下一篇: 用c语言实现栈
EmSoftEn
博客等级 码龄12年 40粉丝 63原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值