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

FreeRTOS - 链表机制

1. 链表操作的难点:指针

理解了指针,对于链表就容易理解了。
2个口诀:

  • 变量变量,能变,就是能读能写,必定在内存里(RAM)
  • 指针指针,保存的是地址,32位处理器中地址都是32位的,无论是什么类型的指针变量,都是4字节

2. FreeRTOS的链表代码分析

2.1 实现链表节点

节点就是链表项

2.1.1. 链表节点数据结构

2.1.2 链表节点初始化

2.2 链表根节点
2.2.1 链表根节点数据结构

  • uxNumberOfItems:用于表示该链表下有多少个结点,根节点除外
  • pxIndex:指向当前正在使用的item,这个pxIndex被用来遍历链表
  • xListEnd:链表是首尾相连的,是一个圈,首就是尾,尾就是首,从字面上理解就是链表的最后一个节点,实际上也是链表的第一个节点。数据类型是一个精简的节点。

2.2.2 根节点的初始化

2.2.3 将节点插入到链表的尾部

将节点插入到链表的尾部(可以理解为头部)就是将一个新的节点插入到一个空的链表。

2.2.4 将节点按升序排列插入到链表

如果有两个节点的值相同,则新节点在旧节点的后面插入。

2.2.5 将节点从链表中删除

假设将一个有三个节点的链表中的中间节点删除。

2.3 链表示意图

在上图中,链表中元素是顺序是:item1、item2、item3、xListEnd。

list中有一个pxIndex,指向当前真在使用的item。链表的遍历过程如下:

  • pxIndex初始时指向xListEnd
  • 要取出第一个元素时,pxIndex就会指向item1
  • 再取出下一个元素时,pxIndex就会指向item2
  • 再取出下一个元素时,pxIndex就会指向item3
  • 再取出下一个元素时,pxIndex就会指向xListEnd
  • 发现它是xListEnd时,继续去下一个元素,pxIndex就会指向item1

http://www.mrgr.cn/news/52231.html

相关文章:

  • ESP32-C3实现非易失变量(Arduino IDE )
  • 广州市孤独症康复训练学校,携手迈向未来
  • 机器视觉系统硬件组成之工业相机篇
  • Python Numpy 的 View 与 Copy 使用详解与优化技巧
  • Django学习- ORM基础操作_创建数据
  • 塞班和诺基亚(中古手机图,你见过哪个?)
  • 基于在线教育系统源码的企业培训平台开发解决方案详解
  • 【Python】AI Navigator对话流式输出
  • 网络抓包 - Fiddler 安装和汉化
  • 【网络安全】从NA到P1,我是如何扩大思路的?
  • 位置式PID测试代码
  • C++ Vector 容器的模拟实现及应用详解
  • Dockerfile 中 Expose 命令的作用
  • SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)
  • 12、论文阅读:利用生成对抗网络实现无监督深度图像增强
  • git 操作
  • 【java】深入解析Lambda表达式
  • 涉密网和非涉密网之间企业如何进行安全跨网文件交换?
  • Python可以实现列表排序的几种方法
  • 解决MybatisPlus updateById更新数据时将没传的数据也更新成了null