12.FreerRTOS学习笔记-链表的使用
1.数据结构的内部数据结构
双向节点的定义
struct xLIst_ITEM
{TickType xItemValue; //辅助值,用于节点做顺序排列struct xList_ITEM *pxNect; // 指向下一个节点struct xList_ITEM *pxFrevious; //指向上一个节点void *pvOwner; // 指向拥有该节点的内核对象void *pvContainer; // 指向该节点所在的对象
}typedef struct xLIst_ITEM ListItem_t ;
精简节点结构体定义
struct xMINI_LIst_ITEM
{TickType xItemValue; //辅助值,用于节点做顺序排列struct xList_ITEM *pxNect; // 指向下一个节点struct xList_ITEM *pxFrevious; //指向上一个节点
}typedef struct xMINI_LIst_ITEM MiniListItem_t ;
根节点的数据结构
typedef struct xLIST
{UBaseType_t uxNumberOfItems; /* 链表节点计数器 */ListItem_t *pxIndex; /* 链表节点索引指针 */MiniListItem xListEnd; /* 链表最后一个节点 */}List_t;
freeFTOS链表形式
2.List相关函数
1. 链表根节点初始化
void vListInitialise( List_t * const pxList )
2. 链接节点初始化
void vListInitialiseItem( ListItem_t * const pxItem )
3. 节点的插入(按照升序插入)
void vListInsert( List_t * const pxList,ListItem_t * const pxNewListItem )
4. 节点插入尾巴
void vListInsertEnd( List_t * const pxList,ListItem_t * const pxNewListItem ) PRIVILEGED_FUNCTION;
5.移除节点
UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove )
6. 获取头节点
listGET_HEAD_ENTRY( pxList )
7. 获取下一个节点
listGET_NEXT( pxListItem )
8. 列表是否为空
listLIST_IS_EMPTY( pxList )
9. 列表元素的数量
listCURRENT_LIST_LENGTH( pxList )
10 获取列表项所在的链表
listLIST_ITEM_CONTAINER( pxListItem )
11. 判断列表项是否在一个列表类
listIS_CONTAINED_WITHIN( pxList, pxListItem )
3.测试使用List链表
#include "list.h"/*测试使用结构体
*/
typedef struct _TestData
{ListItem_t item;char buf[100];
}TestData_t;void testFreeList(void)
{List_t list;TestData_t data1,data2,data3,data4;vListInitialise(&list);//xItemValue 的值 可以用来排序--升序data1.item.xItemValue =0 ;data2.item.xItemValue =1 ;data3.item.xItemValue =2 ;data4.item.xItemValue =3 ;//数据结构数据data1.buf[0]=1;data2.buf[0]=2;data3.buf[0]=3;data4.buf[0]=4;//数据插入vListInsert(&list,&data1.item);vListInsert(&list,&data2.item);vListInsert(&list,&data3.item);vListInsert(&list,&data4.item);printf("hello\r\n");//数据节点移除uxListRemove(&data2.item);printf("hello\r\n");//数据便利ListItem_t *pitem=listGET_HEAD_ENTRY(&list);uint32_t i=0;for (;i<list.uxNumberOfItems;i++){//数据节点强制转换为数据结构---尾随数据printf("hello value = %d \r\n",((TestData_t*)(pitem))->buf[0]);pitem = listGET_NEXT(pitem);}printf("hello\r\n");}
int main()
{testFreeList();return 0;
}
12.FreerRTOS学习笔记-链表的使用相关推荐
- Python数据结构学习笔记——链表:无序链表和有序链表
目录 一.链表 二.无序链表 实现步骤分析 三.无序链表的Python实现代码 四.有序链表 实现步骤分析 五.有序链表的Python实现代码 结语 一.链表 链表中每一个元素都由为两部分构成:一是该 ...
- 12.6学习笔记 HTML5表单元素/嵌入图片/视频(未完)
12.6学习笔记 一. HTML 表单元素(下) 二. HTML5嵌入图片与创建分区响应图 三. HTML5嵌入视频 一. HTML 表单元素(下) 主要内容: 用input元素获取有规定格式的字符串 ...
- flink1.12.0学习笔记第2篇-流批一体API
flink1.12.0学习笔记第 2 篇-流批一体API flink1.12.0学习笔记第1篇-部署与入门 flink1.12.0学习笔记第2篇-流批一体API flink1.12.0学习笔记第3篇- ...
- flink1.12.0学习笔记第1篇-部署与入门
flink1.12.0学习笔记第 1 篇-部署与入门 flink1.12.0学习笔记第1篇-部署与入门 flink1.12.0学习笔记第2篇-流批一体API flink1.12.0学习笔记第3篇-高级 ...
- c++ 链表_算法学习笔记 - 链表 - 单链表的粗糙实现
常用的链表有单链表.双链表.循环链表. 概念看得再多,理解得再多,也不一定能够写得出来.所以动动手,多练习才是提升能力的关键. 有朋友留言说道:建议大家在实现之前的思考时间不要太长.一是先用自己能想到 ...
- C语言学习笔记—链表(四)链表的删除
删除节点 链表的节点删除有两种情况 一.删除头节点 将头结点变为第二个节点即可. 二.删除非头节点 将要删除的节点的前一个节点指向到要删除的节点的下一个节点. #include <stdio.h ...
- GPIOB->CRH=0XFFFF0FFF;GPIOB->CRH|=(u32)8<<12;(学习笔记)
看原子哥的IIC.h文件看到这两个语句有点懵,去找了半天资料才懵懵懂懂,下面简单记录一下,以防下次又忘了 就拿这个举例把~,GPIO一组有(0-15)一共16个 前(0-7)是底8位,写成CRL 后( ...
- 【软件分析第12讲-学习笔记】可满足性模理论 Satisfiability Modulo Theories
文章目录 前言 正文 从SAT到SMT SMT历史 z3求解器 SMT求解 命题逻辑.一阶逻辑和二阶逻辑 小结 参考文献 前言 创作开始时间:2022年11月16日16:18:59 如题,学习一下可满 ...
- 12.Laravel5学习笔记:使用mongodb开发LBS应用
做LBS应用有多种方案,这里介绍一下在Laravel5中使用Mongodb来实现,文章参考了: 深入浅出Symfony2 - 结合MongoDB开发LBS应用 环境说明: php集成环境:xampp ...
最新文章
- Ansible之八:Playbook循环
- 关于计算机视觉(随谈)
- xml解析案例:一个简单的学生管理系统
- Linux7的ftp日志怎么看,centos7打开sftp操作日志
- MySQL查询select语句详解
- javaweb(08) jsp(了解)
- springboot显示信息并且修改_Spring Boot小结-03--增.删.改.查
- VS C++ def
- AI头发笔刷_1500款设计字体,海量PS笔刷,icon模板免费送!还为设计发愁吗?
- Command Line Tools下载不下来,则可以去官网下载
- CnOpenData中国行政区划数据简介
- 万能通用!权限系统就该这么设计
- 获得资源配置文件的路径
- 2023年江苏专转本志愿填报辅导(22上岸南工程学长辅导手册)
- 中性粒细胞的免疫应用最新研究进展
- 阳光事业必须在阳光下进行
- MUI初体验 模仿微信页面
- Tensorflow五种花卉分类
- android打印 编辑并打印 word
- Android DataBinding学习和实践(二)
热门文章
- java processrequest_java-如何在camera2 API中使用reprocessCaptureRequest
- 模板引擎工作原理_「白皮书解读搜索引擎的工作原理」如何排序
- 鸿蒙系统上线 华为内部人员喷了,鸿蒙系统上线?华为人员表示:勿上当 山寨网站...
- php音频转换接口,PHP实现chrome表单请求数据转换为接口使用的json数据
- java图片写入word中
- 线性查找法java代码_Java线性查找和二分查找
- python multiprocessing 得到多进程返回的结果
- pandas to_sql保存数据到数据库后,添加自增长的主键ID(PRIMARY KEY)
- 外虚内实是什么意思_广东潮州“茶”文化浓厚,为什么“工夫茶”常被谬传“功夫茶”?...
- m不能被3整除c语言表达式,求mn-之间所有不能被3整除的整数之和求 – 手机爱问...