{
l->next = l->prev = l;
}
**图片来源:《RT-Thread内核实现与应用开发实战》**
![在这里插入图片描述](https://img-blog.csdnimg.cn/16f122121c294d4397473106cb916e00.png#pic_center)
初始化函数里没有给链表头申请空间,这一步需要手动使用 `rt_malloc()` 来申请,具体可以参考下面的代码(参考原文)。
head = rt_malloc(sizeof(rt_list_t)); // 申请动态内存
if(RT_NULL == head)
rt_kprintf(“动态内存申请失败!\n”);
else
rt_kprintf(“动态内存申请成功”);
rt_kprintf(“双向链表初始化中…\n”);
rt_list_init(head);
if(rt_list_isempty(head)
rt_kprintf(“双向链表初始化成功!\n”);
### 向链表中指定节点后面插入节点 rt\_list\_insert\_after()
插入节点前,需要先申请节点大小的内存(见下文),然后在指定节点后插入新的节点。
/**
* @brief insert a node after a list
*
* @param l list to insert it
* @param n new node to be inserted
*/
rt_inline void rt_list_insert_after(rt_list_t *l, rt_li