今天是2024.10.3,学习了列表和列表项,个人学习的小小总结,如果有误请指正
列表和列表项是什么
列表可以说是freertos中的一种数据结构吧,列表是由列表项组成的,每个列表项又有前继和后继(包括首尾),和双向列表有点像。
列表结构体
(1)和(5)据说是调试的时候用到的宏定义,我们不需要多理会。
(2)是列表中列表项的个数
(3)pxindex是当前列表中所指的列表项,用来遍历列表
(4)迷你列表项,代表一个列表的最后一个列表项,仅用作充当末尾列表项连接列表
简略概括为
列表项结构体
(1)(7)据说是调试的时候用到的宏定义,我们不需要多理会。
(2)代表列表项的值(用于升序排序)
(3)该列表项的后继
(4)该列表项的前继
(5)该列表项归谁所有,通常是任务控制块
(6)该列表项属于哪个列表
简略概括为
迷你列表项
迷你列表项有提到过,他是一个列表的最后一个列表项,而且仅作列表的最后一项,用于连接列表项,无其他作用。因此他只有值,前继,后继三个成员变量(它的value是0xffffffff,因为他是末尾项,最大值)
简略概括为
相关API函数
初始化列表和列表项
初始化列表
列表刚初始化时只带有一个作为末尾列表项的迷你列表项,所以他的index,previous,next都是指向这个末尾列表项。
初始化列表项
而初始化列表项的函数就很简单了,他只需要初始化他所属的列表为空就可以了
插入列表项
按照升序插入
这个是升序插入的函数,也就是说它会根据列表项的value来决定列表项目插入的位置,如果待插列表项的value等于0xffffffff,那他就直接插入在迷你尾列表项之前。如果不是的话,就通过一个for循环,遍历到列表最后一个value小于待插项value的列表项,然后再插入。
按照尾插入
尾插入就比较简单了,他会直接插入到列表pxindex所指的列表项的后面。
删除列表项
返回值是列表中所剩的列表项数目。
个人学习的小小总结,如果有误请指正