跟着野火从零开始手搓FreeRTOS(2.1)列表与列表项简介

本文讲述了链表在FreeRTOS中的应用,包括单向和双向链表的概念、节点结构、节点指针的作用以及链表的基本操作,如插入和删除。作者强调了学习链表理论的重要性,尤其是在理解抽象概念如野火教程中的衣架比喻之后。
摘要由CSDN通过智能技术生成

PS:从这篇文章开始,才是我写这个系列的初衷。因为这个部分本人在学习时看了很多视频才勉强搞懂这部分。不得不吐槽一句,这里B站上的课讲得好难······

        所谓列表与列表项,对应的就是数据结构的链表与节点。虽然本系列文章是以野火为基础,但是这部分野火讲得实在有些抽象,为此本人特意去看了数据结构的链表。在这个过程中我在B站上找到了一个up,他的比喻让我觉得非常恰当,而且原理讲得也不错。

        不看也没关系,我会再简单针对FreeRTOS描述一下链表。

        如果看不懂,,可以看我的这篇文章:链表是什么-CSDN博客

        链表由几个节点相连而成,节点由节点指针和携带的数据组成,节点指针指向下一个节点。

        在FreeRTOS中,所有的的链表是首尾相接的,即首节点即尾结点。链表首尾相连的,成一个环形,仿佛圆形的晾衣架。链表上的每个节点就像衣架上面的钩子,钩子本身没什么东西,但是可以挂很多不一样的东西,比如衣服、袜子、毛巾之类的。正如节点一样,节点指针将节点连接起来,并携带不同类型的数据挂载在链表上,数据类型可以为int、float、char等。

        因此,在单链表中每个节点必须包含一个节点指针,用来指向下一个节点。节点作为一个数据结构体,在里面可以有各种数据类型的信息,但这样的方式很少用。
        我们一般使节点只包括一个节点指针,然后将这些节点内嵌到要挂载存储的数据中。

struct node    //定义节点结构体
{
    struct node *next;    //节点指针,指向下一个节点
}

struct userlist    //数据
{
    struct node *next;    //内嵌的指针
        ·
        ·                 //数据
        ·
}

大概流程如下:


        链表常规的操作就是节点的插入和删除,为了顺利的插入,通常一条链表我们会人为地规定一个根节点,通常根节点还会有一个节点计数器,用于统计整条链表的节点个数。
        在实际应用中,我们用的更多的是双向链表。双向链表与单向链表的区别就是节点中有两个节点指针,分别指向前后两个节点,其它完全一样。

至此,链表的简单介绍完毕,下一篇开始代码上的实现。

PS:野火讲的衣架那个比喻让我这个数据结构忘光了的人很难听懂,但是我稍微补了一下知识后发现其实这个例子十分的恰当。所以大家还是去学一下链表在听野火的课比较好······

还有这两个图是我拿野火的,等我有时间了就自己画个换掉。下部分代码好难TAT······

第二个图是我连下一篇一起画出来的,算是我对链表的最终理解吧。

单链表的没啥营养,就不画了,偷个懒,嘻嘻。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值