List 微控制器的C语言列表管理库

List 微控制器的C语言列表管理库,list,linked-list,microcontroller,8051,sdcc,List,Linked List,Microcontroller,8051,Sdcc,我正在使用基于8051内核的CC2532进行一个项目。我使用SDCC作为编译器 我需要创建一个字符串列表,并添加、删除、追加、列出元素 是否有任何简单的开源/免费库可以在MCU中使用 我找到了SimCList和SGLIB,但它们似乎有些过分,我想知道是否有人知道更简单/更轻的替代方案。我只需要(添加、删除、列表、大小)函数。它不需要是循环的,只是一个简单的FIFO列表。我总共有4K内存。列表元素的数量最多为20个。简单列表的实现非常简单,因此您最好自己完成。如果需要,您可以从中提取文件inclu

我正在使用基于8051内核的CC2532进行一个项目。我使用SDCC作为编译器

我需要创建一个字符串列表,并添加、删除、追加、列出元素

是否有任何简单的开源/免费库可以在MCU中使用


我找到了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
/
自由舞。