List 微控制器的C语言列表管理库
我正在使用基于8051内核的CC2532进行一个项目。我使用SDCC作为编译器 我需要创建一个字符串列表,并添加、删除、追加、列出元素 是否有任何简单的开源/免费库可以在MCU中使用List 微控制器的C语言列表管理库,list,linked-list,microcontroller,8051,sdcc,List,Linked List,Microcontroller,8051,Sdcc,我正在使用基于8051内核的CC2532进行一个项目。我使用SDCC作为编译器 我需要创建一个字符串列表,并添加、删除、追加、列出元素 是否有任何简单的开源/免费库可以在MCU中使用 我找到了SimCList和SGLIB,但它们似乎有些过分,我想知道是否有人知道更简单/更轻的替代方案。我只需要(添加、删除、列表、大小)函数。它不需要是循环的,只是一个简单的FIFO列表。我总共有4K内存。列表元素的数量最多为20个。简单列表的实现非常简单,因此您最好自己完成。如果需要,您可以从中提取文件inclu
我找到了SimCList和SGLIB,但它们似乎有些过分,我想知道是否有人知道更简单/更轻的替代方案。我只需要(添加、删除、列表、大小)函数。它不需要是循环的,只是一个简单的FIFO列表。我总共有4K内存。列表元素的数量最多为20个。简单列表的实现非常简单,因此您最好自己完成。如果需要,您可以从中提取文件
include/proto/exec.h
,include/exec/nodes.h
,include/exec/lists.h
,lib/NewList.c
和lib/List.c
,以实现简单。您可以使用NewList
初始化空FIFO,AddTail
向FIFO添加节点,RemHead
从FIFO中删除节点。size
函数如下所示:
unsigned int size(struct List *list)
{
unsigned int res = 0;
struct Node *node = list->lh_Head;
while (node->ln_Succ != NULL) {
res++;
node = node->ln_Succ;
}
return res;
}
注意,列表末尾的测试是node->ln\u Succ!=与许多其他列表框架不同,NULL
。这实际上是一个重做的
我应该在这里复制列表处理的所有代码吗?如果您只需要FIFO,软件堆栈不是更好吗?对于ths,您只需要一个足够容纳最多成员的数组和一个堆栈指针。对于标量(整数、浮点、指针),添加和删除只是
*--stackptr=x
和x=*stackptr++
@Vovanium Jelipito想要一个队列(FIFO)而不是堆栈(LIFO)。谢谢,是的,我会试一试。如何销毁/释放元素?我对它不是很熟悉,是的,这个库不做内存管理。这意味着你仍然必须自己跳malloc
/自由舞。