- 博客(128)
- 收藏
- 关注
原创 FreeRTOS 入门(三十四):事件组原理与实战 —— 多车协同控制
本文介绍了FreeRTOS事件组的原理与应用。事件组通过位操作实现多任务同步,每个位代表一个事件,支持多任务同时设置和等待事件。文章详细解析了事件组的创建、设置和等待函数,并通过汽车协同实验展示了事件组的实际应用:汽车1到达终点触发事件后,同时唤醒等待中的汽车2和汽车3任务。实验验证了事件组在多任务同步中的高效性,为FreeRTOS系列笔记画上句号。
2025-12-21 09:00:00
590
原创 FreeRTOS 入门(三十三):优先级反转与互斥量 —— 解决资源竞争
本文介绍了优先级反转现象及其解决方案。优先级反转指低优先级任务阻塞高优先级任务,导致系统运行异常。通过汽车游戏复现该现象,并分析其核心原因是资源竞争与任务优先级不匹配。FreeRTOS的互斥量(Mutex)采用优先级继承机制,临时提升低优先级任务,确保资源及时释放,从而避免高优先级任务被阻塞。文章还演示了互斥量在I2C资源保护中的实际应用,验证了其有效性。互斥量是解决优先级反转问题的可靠方案。
2025-12-20 09:00:00
621
原创 FreeRTOS 入门(三十二):信号量原理与实战 —— 汽车互斥控制
本文详细讲解了FreeRTOS信号量的原理与应用。信号量本质是一种无数据传输的"计数队列",通过计数值实现资源同步与互斥。文章对比了信号量与队列的结构和操作差异,详解了二进制信号量和计数型信号量的创建及操作函数。通过汽车游戏实战,演示了如何用信号量控制车辆通行顺序,实现资源互斥访问。最后总结了信号量使用的注意事项,包括初始化、计数值上限、阻塞时间设置等关键点。
2025-12-19 09:00:00
1636
原创 FreeRTOS 入门(三十一):多队列按键分发 —— 汽车独立控制实战
本文介绍了如何通过FreeRTOS队列实现红外遥控按键数据的分发控制三辆独立汽车。针对单一队列数据需分发到多队列的问题,作者提出两种方案:直接关联队列句柄的简陋实现存在强耦合、复用性差等弊端;优化后的"句柄注册+循环分发"方案通过动态注册队列句柄和循环遍历分发,实现代码解耦和复用性提升。每个汽车任务创建私有队列并注册到分发列表,独立处理按键指令,确保控制独立性。该方案不仅适用于汽车控制,也可推广到其他"单一数据源→多目标队列"的场景,体现了FreeRTOS队列的灵活应
2025-12-18 09:00:00
645
原创 FreeRTOS 入门(三十):MPU6050 队列集集成与姿态控制
本文详细介绍了将MPU6050姿态传感器集成到FreeRTOS队列集架构的实现过程。主要内容包括:MPU6050数据采集任务创建、队列集扩展集成、任务创建顺序优化、数据处理逻辑实现等关键技术点。通过定义专用数据结构体和队列,实现了传感器数据的采集传输;通过调整任务创建顺序解决了队列集同步问题;在InputTask中新增MPU6050数据处理分支,将倾斜角度转换为挡球板控制指令。文章还指出了I2C通信冲突等潜在问题,为嵌入式系统多传感器集成提供了实践参考。
2025-12-17 09:00:00
707
原创 FreeRTOS 入门(二十九):队列集代码落地与多硬件扩展
本文介绍了基于FreeRTOS队列集实现多队列统一处理的具体实现方案。主要内容包括: 队列集创建与项目集成:通过xQueueCreateSet创建队列集,并集成到游戏任务中,同时创建统一数据处理任务InputTask。 队列加入队列集:使用xQueueAddToSet将硬件队列加入队列集,通过句柄获取函数避免全局变量暴露。 队列集读取机制:利用xQueueSelectFromSet函数实现按需读取队列集中的数据。 InputTask实现:构建完整的数据处理链路,包括读取队列集、获取队列句柄、解析原始数据并生
2025-12-16 09:00:00
981
原创 FreeRTOS 入门(二十八):多队列统一处理 —— 轮询与队列集方案
本文对比了FreeRTOS中多队列统一处理的两种方案。现有独立队列方案存在硬件与业务耦合过紧、多任务栈资源占用过多的问题。轮询方案实现简单但CPU利用率低;队列级方案通过"队列存句柄"机制实现高效通知,任务仅在数据到达时激活,既降低CPU占用又提升扩展性。文章详细分析了两种方案的实现原理、代码框架及适用场景,指出队列级方案是多硬件场景下的最优解,为复杂FreeRTOS系统提供了轻量化、高扩展的架构思路。
2025-12-15 09:00:00
831
原创 FreeRTOS 入门(二十七):编码器队列实战 —— 挡球板控制
本文详细讲解了旋转编码器与队列的综合应用,通过编码器采集操作信号并控制挡球板移动。主要内容包括:定义编码器数据结构体并创建动态/静态队列;在中断服务函数中写入编码器数据;创建处理任务解析队列数据并控制挡球板;最后改造红外遥控与编码器的兼容性,使两种控制方式共用一套处理逻辑。通过队列实现多设备协同,深化了队列在嵌入式系统中的核心作用。
2025-12-12 09:00:00
448
原创 FreeRTOS 入门(二十六):队列创建与读写 API 实战解析
本文介绍了FreeRTOS队列的核心操作与应用。首先讲解了队列的两种创建方式:动态创建(xQueueCreate)适合快速开发,静态创建(xQueueCreateStatic)适合内存严格控制的场景。然后详细说明了实验平台的调整和准备工作。文章重点阐述了队列在IR中断中的实战应用,包括定义数据结构体、创建队列以及绑定中断与任务的三个步骤。最后详细解析了任务和中断场景下的写队列API,包括xQueueSend、xQueueSendToBack等函数的使用方法和参数说明。这些内容为后续编码器控制等实战应用奠定了
2025-12-10 22:15:24
729
原创 FreeRTOS 入门(二十五):队列本质解析与核心流程
FreeRTOS队列是多任务通信的核心组件,本质上是环形缓冲区增强版,增加了互斥保护和阻塞-唤醒机制。队列与信号量、互斥量同源,区别在于是否传输具体数据。通过流水线工人协作场景,可形象理解队列的读写阻塞与唤醒机制:任务在队列空/满时会进入阻塞态,被数据就绪或超时唤醒。FreeRTOS通过就绪链表、队列接收/发送链表和延时链表实现任务状态切换。队列封装了底层复杂性,开发者只需调用API即可实现安全高效的数据传输。下篇将进行实战应用,移植游戏机项目并优化控制方式。
2025-12-09 09:00:00
654
原创 FreeRTOS 入门(二十四):数据传输方案 —— 环形缓冲区解析
摘要 本文对比了三种任务间数据传输方案:全局变量、环形缓冲区和FreeRTOS队列。全局变量实现简单但存在数据个数限制、并发访问错误和CPU资源浪费等缺陷。环形缓冲区通过数组+读写指针实现循环数据存储,采用"预留空位置"方法区分空/满状态,避免了全局变量的缺陷。文章详细分析了环形缓冲区的实现逻辑、优化方法,并指出使用"数据个数变量"的错误实现会导致多任务竞争风险。最后指出环形缓冲区是FreeRTOS队列的底层基础,队列本质是带互斥保护和阻塞机制的环形缓冲区。
2025-12-08 09:00:00
873
原创 FreeRTOS 入门(二十三):任务间通信核心方案概述
本文概述了FreeRTOS五大任务间通信/同步方案:队列(FIFO数据传输)、事件组(多任务状态bit位同步)、信号量(基于计数值的同步)、互斥量(临界资源保护)和任务通知(多对一高效事件通知)。这些方案均内置阻塞-唤醒机制,兼顾通信正确性与执行高效性,解决了全局变量方案存在的资源浪费问题。文章还通过对比表格展示了各方案的核心定位和适用场景,为后续实战及游戏机项目开发奠定基础。下篇将重点讲解环形缓冲区的原理与实现。
2025-12-07 17:19:50
697
原创 FreeRTOS 入门(二十二):临界资源互斥示例
本文介绍了三种临界资源互斥方案:1)全局变量简易互斥,存在任务切换导致的竞争风险;2)全局变量自减优化,仍未解决操作非原子化问题;3)关中断方案实现可靠互斥但浪费CPU资源。文章指出这些基础方案仅适用于简单场景,后续需要结合FreeRTOS标准互斥机制和阻塞调度,才能实现高效可靠的资源互斥。通过分析各方案优缺点,为理解标准API设计逻辑奠定基础。
2025-12-07 09:00:00
966
原创 FreeRTOS 入门(二十一):同步与互斥核心概念
多任务开发中,任务间协作的核心难题 —— 执行顺序协调与共享资源保护,都离不开 “同步” 与 “互斥” 机制。本文用 “厕所使用” 的生活场景通俗拆解两者本质,通过 “计算任务 + 打印任务” 的实战具象化同步逻辑,同时暴露全局变量标志位同步方案的 CPU 浪费、精度不足等缺陷。从概念区分到代码实现,再到问题分析,为后续学习 FreeRTOS 标准同步 / 互斥组件(信号量、互斥锁等)铺垫基础,助力掌握多任务协作的核心基本功。
2025-12-06 09:00:00
805
原创 FreeRTOS入门(二十):延时函数:精准周期与相对延时的秘密
本文对比了FreeRTOS中的两个延时函数:vTaskDelay(相对延时)和xTaskDelayUntil(绝对延时)。vTaskDelay从调用时刻开始延时,适用于非周期性任务;xTaskDelayUntil通过记录上次唤醒时间实现精准周期,适用于需要固定间隔的任务(如传感器采集)。实验显示xTaskDelayUntil能自动补偿任务执行时间差异,确保周期稳定。正确选择延时函数对实时系统开发至关重要,vTaskDelay简单易用,xTaskDelayUntil则保证周期性执行的准确性。
2025-12-04 09:00:00
762
原创 FreeRTOS 入门(十九):空闲任务的作用
为什么任务不能用有限循环直接退出?用vTaskDelete函数 “自杀” 或 “他杀” 的核心逻辑是什么?看似 “无所事事” 的空闲任务,如何承担 “清理任务残留资源” 和 “系统兜底” 的关键职责?这些问题的答案,直接关系到多任务系统的稳定性,能帮你避开 “程序卡死”“内存泄漏” 等高频坑。本文将从任务退出的禁忌入手,详解vTaskDelete的正确用法,再深入剖析空闲任务的两大核心作用,搭配实战代码验证和编程习惯总结,让你彻底搞懂这一 FreeRTOS 底层机制。无论你是刚入门的嵌入式开发者,还是在项目
2025-12-03 09:00:00
634
原创 FreeRTOS 入门(十八):任务调度核心原理 —— 链表驱动 + Tick 中断机制
本文深入解析了FreeRTOS任务调度的核心机制。重点阐述了调度器通过优先级链表管理任务状态,每个优先级对应一个就绪链表,任务在不同链表间的移动实现状态切换。Tick中断是调度的触发引擎,每1ms触发一次调度流程:更新系统时钟、检查阻塞任务、执行任务切换。文章详细分析了优先级抢占、时间片轮转的实现原理,并对比了阻塞态与暂停态的本质区别(前者自动恢复,后者需手动唤醒)。最后指出理解"链表管理+中断触发"这一核心机制,是从使用到优化FreeRTOS的关键跨越。
2025-12-02 09:00:00
1192
原创 FreeRTOS 入门(十七):任务状态全解析 + 音乐暂停 / 恢复实战
摘要 本文深入解析FreeRTOS任务调度机制,重点探讨四大任务状态(运行/就绪/阻塞/挂起)及其转换逻辑。通过音乐播放器实战案例,演示如何利用vTaskSuspend/vTaskResume实现任务暂停与恢复功能。关键点包括:1)任务状态转换图展示调度原理;2)按键控制实现音乐任务创建、暂停、恢复和删除;3)状态标志位管理确保操作连贯性;4)资源释放处理避免残留问题。案例完整呈现了任务状态从创建到删除的全生命周期流转过程,为理解RTOS调度机制提供了典型范例。
2025-12-01 09:00:00
973
原创 FreeRTOS 入门(十六):音乐播放优化 —— 优先级调整与任务主动让步
本文通过优化音乐播放任务,解决了卡顿与按键失效的矛盾。首先提高音乐任务优先级消除卡顿,但导致按键失效;随后将自创延时函数mdelay替换为FreeRTOS的vTaskDelay,使高优先级任务在延时期间主动释放CPU资源。最终实现音乐流畅播放的同时按键控制正常响应,体现了任务优先级匹配和主动让步在RTOS调度中的重要性。文章还预告下篇将深入任务状态机制,实现音乐暂停/恢复功能。
2025-11-30 18:00:00
1010
原创 FreeRTOS 入门(十五):按键控制音乐任务创建与删除
想掌握 FreeRTOS 任务动态管理核心?本篇聚焦vTaskDeleteAPI,通过 CT117E-M4 开发板实战 “按键控制音乐任务创建 / 删除”!从 API 用法、任务句柄作用,到按键交互逻辑与 LCD 状态显示,全程干货。还针对性解决任务删除后蜂鸣器卡顿的资源残留问题,详解内存碎片化风险与 “挂起 / 恢复” 替代方案。实战结合问题排查,助你吃透任务生命周期管理,为 “声光色影” 综合项目筑牢基础!
2025-11-30 09:00:00
961
原创 FreeRTOS 入门(十四):同一函数创建多任务 —— 任务参数传递 + LCD 互斥访问
本文介绍了在FreeRTOS中使用同一函数创建多个差异化任务的方法。通过定义任务参数结构体传递不同配置,实现了3个LCD打印任务分别在不同行显示计数信息。针对共享资源冲突问题,采用全局变量实现简易互斥访问,并通过添加任务延时解决了显示异常问题。这种方法简化了同类任务的开发,是FreeRTOS任务开发的常用技巧。
2025-11-29 09:00:00
743
原创 FreeRTOS 入门(十三):声光色影完整项目实战 —— 三种任务创建方式 + 多任务并发
本文介绍了基于FreeRTOS的"声光色影"综合项目实现。项目通过多任务并发运行,整合LED、按键、LCD、蜂鸣器和全彩LED等硬件模块,展示了三种FreeRTOS任务创建方式:默认任务复用(LCD交互)、动态创建(蜂鸣器播放音乐)和静态创建(LED闪烁和全彩LED渐变)。详细说明了各功能模块的实现方法,包括硬件配置、驱动代码和任务调度策略,并提供了测试模式切换方法。项目实现了声(播放音乐)、光(LED闪烁)、色(全彩LED七色渐变)和影(按键控制LCD显示)四大功能,是FreeRTOS
2025-11-28 13:01:39
1007
原创 FreeRTOS 入门(十二):声光色影实战前置 ——LED 与 KEY 驱动开发(CT117E-M4)
本文介绍了基于STM32的"声光色影"综合项目的前置硬件配置与驱动开发,重点讲解了LED和按键(KEY)的硬件原理、CubeMX配置及驱动代码实现。LED驱动采用寄存器操作优化性能,通过锁存器解决与LCD的引脚冲突;按键驱动使用状态对比法检测按下/释放事件。文章提供了完整的代码实现和寄存器解析,为后续多任务开发奠定基础。
2025-11-24 09:00:00
1682
原创 FreeRTOS 入门(十一):任务栈大小粗略估算
FreeRTOS任务栈大小估算方法与实践 摘要:本文系统讲解了FreeRTOS任务栈大小的估算方法。首先分析任务栈存储的三大核心内容:返回地址与寄存器、局部变量、现场寄存器(固定64字节)。接着提出栈估算的核心逻辑——寻找任务执行中的"栈占用峰值",其关键影响因素包括函数调用深度(每层最多36字节)和局部变量总大小。通过音频播放任务的实战案例,演示了估算过程:4层调用链(144字节)+局部变量(32字节)+现场寄存器(64字节)=240字节,验证了512字节的配置合理性。文章强调采用&q
2025-11-23 09:00:00
849
原创 FreeRTOS 入门(十):任务创建核心原理(三要素 + 动态 / 静态创建)
本文介绍了FreeRTOS任务创建的核心知识,包括任务三要素(任务函数、栈空间、优先级)、任务函数编写规范、任务控制块(TCB)的作用,以及动态创建(xTaskCreate)和静态创建(xTaskCreateStatic)两种方式的实现原理与区别。动态创建依赖堆内存自动分配,使用简单但需要内存管理;静态创建需手动分配静态内存,适合对内存控制严格的场景。这些内容是构建多任务系统的基础,理解其原理有助于设计稳定的嵌入式应用。
2025-11-22 16:16:15
880
原创 FreeRTOS 入门(九):2.4 寸 TFT-LCD 驱动开发(基于 CT117E-M4)
本文介绍了2.4寸TFT-LCD屏的驱动开发过程,基于STM32G431RBT6开发板和8080并行时序接口。内容涵盖硬件原理、引脚冲突解决方案、8080时序协议解析,以及CubeMX配置步骤。重点实现了格式化显示函数LcdSprintf和增强版初始化函数LCD_Init2,解决官方驱动可能存在的初始化不稳定问题。通过测试函数验证了LCD的文本显示和颜色设置功能,为后续FreeRTOS多任务项目奠定显示基础。文章提供了完整的原理讲解和实战代码,便于快速复现应用。
2025-11-21 14:07:02
971
原创 FreeRTOS 入门(八):FreeRTOS 内存管理(5 种堆实现对比与使用)
本文详细解析了 FreeRTOS 的 5 种内存管理实现(heap_1~heap_5),包括配置方法、核心对比和适用场景。重点分析了碎片处理策略和内存管理范围,推荐 heap_4 作为首选方案。文章还介绍了堆相关的核心函数(pvPortMalloc/vPortFree)和内存查询方法,帮助开发者优化内存使用。对于特殊需求(如多块离散内存)可选用 heap_5 实现。
2025-11-20 20:00:00
1020
原创 FreeRTOS 入门(七):FreeRTOS 源码结构与核心编程规范解析
本文详细解析了FreeRTOS的源码结构与编程规范。重点包括:核心功能文件(task.c/list.c等)的作用、可移植目录(portable)的设计原理、内存管理(MemMang)的实现方式;介绍了配置文件FreeRTOSConfig.h的定制方法和main.c中的启动流程;详解了FreeRTOS特有的数据类型(TickType_t/BaseType_t)和严格的命名规范(变量前缀、函数前缀、宏定义规则)。通过系统性地梳理FreeRTOS的源码组织架构和编码风格,为深入理解其底层运行机制打下基础。
2025-11-20 09:00:00
797
原创 FreeRTOS 入门(六):栈的局部变量分配与任务独立栈核心原因
本文通过分析ARM架构下局部变量的存储机制和FreeRTOS任务切换机制,深入探讨了栈在嵌入式系统中的关键作用。第一部分通过反汇编验证了volatile修饰符强制变量入栈的特性,分析了寄存器与栈分配的优先级;第二部分阐述了RTOS中每个任务需要独立栈的原因,解释了任务切换时上下文保存与恢复的完整流程。文章指出栈不仅是存储局部变量的空间,更是实现多任务并发的核心机制,为后续分析FreeRTOS源码奠定了基础。通过底层实证方法,阐明了栈空间规划与任务隔离的重要关联。
2025-11-19 20:00:00
1477
原创 FreeRTOS 入门(五):栈的核心原理与函数调用机制
本文深入解析了FreeRTOS中栈的核心原理与函数调用机制。通过实例代码展示三层函数嵌套调用,结合反汇编分析揭示了栈的关键作用:保存返回地址(LR)防止嵌套调用时被覆盖。栈通过"先进后出"特性匹配函数调用逻辑,确保正确返回。文章还预告了后续将探讨局部变量存储机制和FreeRTOS任务栈设计,为理解RTOS多任务调度奠定基础。通过底层汇编分析,清晰呈现了栈在嵌入式系统中的基础性作用。
2025-11-19 09:00:00
1250
原创 FreeRTOS 入门(四):堆的核心原理
本文从堆的核心概念出发,首先通过极简的数组模拟实现基础堆分配函数my_malloc,展示了内存分配的基本原理。随后指出简单实现的致命缺陷——无法释放内存,进而引出工业级堆管理方案。重点阐述了链表式管理的核心思路:通过内存块头部记录大小信息,利用链表串联空闲块,实现精准分配与释放。文章详细分析了分配与释放过程中链表结构的变化,并预告下一篇将探讨栈管理与任务栈的相关内容。全文循序渐进,从理论到实践,系统讲解了堆内存管理的实现原理与优化思路。
2025-11-18 21:00:00
853
原创 FreeRTOS 入门(三):ARM 架构基础与汇编指令核心解析
本文深入解析ARM架构与汇编指令,为理解FreeRTOS任务调度机制奠定基础。首先介绍ARM精简指令集(RISC)的核心特性,包括内存操作限制、寄存器运算和高效硬件设计。重点剖析CPU核心组件:通用寄存器(R0-R15)、算术逻辑单元(ALU)和程序状态寄存器(xPSR),特别强调FreeRTOS依赖的4个关键寄存器(SP、LR、PC、xPSR)的功能。 文章系统讲解四类核心汇编指令:内存操作(LDR/STR)、算术运算(ADD/SUB)、比较(CMP)和跳转(B/BL),揭示其数据传输三要素(目的、源、长
2025-11-18 09:00:00
579
原创 FreeRTOS 入门(二):多任务创建与核心驱动实现
本文为 FreeRTOS 入门第二篇,聚焦多任务创建与核心驱动实现。基于 CT117E-M4 开发板,适配 STM32G431RBT6 外设,先实现了定时器(高精度延时)、LED(PC8-15 配置控制)、按键(PB0 输入)三大核心驱动,再通过 FreeRTOS 原生接口 xTaskCreate 创建 LED1 循环闪烁和按键控制 LED2 亮灭两个任务,配置任务栈大小与优先级后,测试验证两任务可并发执行、互不阻塞,解决了裸机单任务阻塞问题,同时预告下一篇将深入 ARM 架构知识以理解多任务调度原理。
2025-11-17 09:00:00
1868
原创 FreeRTOS 入门(一):引入并创建工程
本文介绍了嵌入式FreeRTOS实时操作系统的入门指南。首先分析了裸机开发的四种模式及其局限性,包括轮询、前后台、定时器和状态机模式。然后阐述了FreeRTOS通过多任务交替执行解决这些问题的核心思想。基于STM32G431RBT6开发板,详细讲解了使用CubeMX配置FreeRTOS工程的步骤,包括芯片选择、时钟配置、FreeRTOS组件设置和工程输出。最后规划了以打砖块游戏为核心的后续学习项目,通过实践掌握FreeRTOS多任务开发技能。文章为嵌入式开发者提供了从裸机到RTOS的平滑过渡指南。
2025-11-16 09:00:00
2030
原创 C 语言数据结构笔记(二十四):二叉树层序遍历原理与三种队列实现
本文介绍了二叉树的层序遍历(广度优先遍历)及其三种队列实现方案。层序遍历按层级顺序访问节点,核心依赖队列的先进先出特性。文中详细解析了层序遍历原理,并通过示意图展示遍历流程。三种队列方案包括:移动元素型(数组实现,出队需移动元素)、头动元素型(数组实现,仅移动头指针)和链表型(动态扩容)。每种方案分析了优缺点及适用场景,并附有完整代码实现。测试结果表明输出符合预期,验证了不同队列实现的有效性。本文帮助读者理解队列在层序遍历中的关键作用,为二叉树遍历提供了多种技术选择。
2025-11-13 09:00:00
872
原创 C 语言数据结构笔记(二十三):二叉树非递归遍历实现(链表栈 + 数组栈)
本文介绍了二叉树前序、中序、后序遍历的非递归实现方法。首先设计了链表栈和数组栈两种数据结构作为遍历的基础,重点讲解了借助栈模拟递归过程的算法原理。对于前序遍历,通过"根→左→右"的顺序进行入栈和出栈操作;中序遍历采用"左→根→右"的顺序;后序遍历则需记录访问状态以确保"左→右→根"的顺序。文中提供了完整的C语言实现代码,并通过测试验证了非递归遍历与递归遍历结果的一致性,有助于深入理解二叉树遍历的算法本质和栈的应用。
2025-11-12 09:00:00
995
原创 C 语言数据结构笔记(二十二):树的基础概念与二叉树遍历(递归实现)
本文介绍了树结构的基本概念及其核心应用场景,重点讲解了二叉树的四种遍历方式(前序、中序、后序、层序),并通过代码实现了前序和中序的递归遍历。主要内容包括: 树的定义与线性表的对比,强调其"一对多"的层级关系特性 树的常见术语(根节点、父节点、叶子节点等)和典型应用场景(族谱、分类系统等) 二叉树节点结构设计和手动搭建树结构的实现方法 前序、中序遍历的递归实现原理与代码示例,通过调整打印顺序实现不同遍历方式 摘要突出了树结构的核心特征和基本遍历方法,为后续学习更复杂的树形结构(如二叉排序树
2025-11-11 09:00:00
540
原创 C 语言数据结构笔记(二十一):队列基本原理实现
摘要:本文介绍了队列的核心概念与实现方法。队列是一种遵循“先进先出”(FIFO)原则的线性表结构,插入和删除操作分别在队尾和队头进行。文章详细阐述了队列的特性、应用场景(如操作系统消息调度、网络请求排队等),并基于双向循环链表实现了队列的创建、判空、入队、出队等核心操作。通过"头添加+尾删除"的方案,利用双向链表的闭环特性提高了操作效率。最后提供了完整的C语言实现代码,包括队列初始化、节点插入删除和内存释放等功能。
2025-11-10 09:00:00
1327
原创 C 语言数据结构笔记(二十):栈的核心原理与实现
本文介绍了栈的核心概念与两种实现方式。栈是一种线性表的操作逻辑,要求插入和删除在同一端完成,具有先进后出(LIFO)特性。文章详细讲解了栈的定义、应用场景(如递归、数据倒置等)以及核心操作流程(创建、判空、压栈、释放等)。重点实现了基于双向循环链表的栈(灵活扩容)和基于数组的栈(高效简洁),并通过链表栈的具体代码示例展示了各核心函数的实现方法。栈作为基础数据结构,在递归、二叉树遍历等算法中具有重要作用。
2025-11-09 09:00:00
581
原创 C 语言数据结构笔记(十九):双向循环链表——插入、删除与环判断
本文深入探讨双向循环链表的进阶操作,包括中间插入(按下标或数据定位)、删除(按下标、批量或数据匹配)以及快慢指针判断链表是否有环。所有操作均利用闭环特性简化逻辑,无需区分头尾节点,提高了代码复用性和效率。实验测试验证了插入和删除操作的正确性,最终链表结果符合预期。此外,通过快慢指针法实现了链表环检测,为实际开发与面试提供了实用解决方案。
2025-11-08 09:00:00
672
PCtoLCD2002字模生成器
2025-09-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅