5 关于RTT的单向链表的实际应用

发布于 2021-04-03 14:17:26

看了一下RTT的单向链表的相关API,但是要加上数据不知道怎么使用。
比如:有这样两个结构体

struct ele1
{
    uint8_t a;
    float f;
};
struct ele2
{
    uint8_t a;
    float f;
    int c;
};

现在要形成两条单链表,他们的节点的数据元素分别为上面的结构体,应该怎么使用呢?不知道有没有表述清楚

查看更多

关注者
0
被浏览
176
whj467467222
whj467467222 认证专家 2021-04-03

你需要在你这两个结构体里面分别增加一个单链表的成员

rt_slist_t list

然后就可以初始化链表

rt_slist_t list;
rt_slist_init(&list);

然后分别把你整个实例化的结构体的list 插入到整个链表上

rt_slist_append(&list, &nlist1)

具体单链表的使用方法可以看我的这篇文章,希望对你有帮助

5 个回答
mii
mii 2021-04-03

楼主要先学习一下上面的链表知识,才能更好进行下一步。因过程操作涉及指针与内存操作,使用时要注意链表长度

Glen_Young
Glen_Young 2021-04-03

要有链表就得有节点指针实现,怎么没看到,还有,不知道你具体要实现的功能是什么,麻烦详细一点

flashman2002
flashman2002 2021-04-03

可以使用百度等搜索引擎搜索关键词“单向链表”,例如:https://zhuanlan.zhihu.com/p/24555136

cxhxy12345
cxhxy12345 2021-04-03

看了你的问题,感觉你对链表的基本概念有点模糊。链表分单向链表和双向链表,通过指针(就像一个链条)将每个链表单元串在一起。它最大的好处就是我们可以顺着表链指向(单向链表只有一个方向)找到每个在链表中的单元。可以任意地插入和删除一个单元。
因此每个链表单元包含了二部分内容:(1)单元数据--就是你所用到的数据(2)链表指针--单向链表只有一个next指针(指向每个链表单元的地址)。
这里要注意二点:1、最后一个单元的next指针指向NULL时,表示这是一个非循环单向链表,如果next指针指向第一个电源地址时,只是一个循环单元地址指针。(2)链表中每个单元的长度(数据+指针)是一致的。
根据上面的描述,你的结构体(链表单元)可以修改成:
struct ele1
{

uint8_t a;
float f;
rt_slist_t next;

};
struct ele2
{

uint8_t a;
float f;
int c;
rt_slist_t next;

};
然后分别对二个单向链表进行初始化。
不知道这个回答是否能解决你的疑问,如果觉得满意给点个采纳~

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览