首先贴上几个链接,来自一些大佬,这些文章详细易懂,可以帮助我们快速全面了解单双链表以及Linux内核链表list.h。
1.C语言链表超详解;作者:rivencode;图文并茂,炒鸡详细
3.拒绝造轮子!如何移植并使用Linux内核的通用链表(附完整代码实现);作者:学习,积累,成长;
4.一文搞懂 Linux 内核链表(深度分析);作者:刘盼;图文并茂,条理清晰,带你认识Linux内核链表
5.linux/include/linux/list.h;作者:Linus Torvalds 林纳斯·托瓦兹;Linux起源,Linux内核的最早作者,git项目作者,当之无愧的大佬
链表简介
-
链表是通过节点把离散的数据链接起来,充分利用了离散分布式的内存空间。通过对节点的遍历,插入和删除操作从而实现对数据的增删改查,通过改变节点指针域指针指向何处可以实现排序算法和一系列典型的数据结构,例如二叉树。
-
线性表(逻辑结构)的链式存储(存储结构)
-
链表由一系列节点(链表中每一个元素称为节点)组成,节点在运行时动态生成 (malloc),每个节点包括两个部分:
一个是存储数据元素的数据域,另一个是存储另外一个或多个节点的指针域 -
头节点,首节点,中间节点,尾结点
单向链表,双向链表和linux内核链表的区别
1.单向链表的特点就是每个节点有一个数据域并且有且仅有一个指针域指向后继节点,遍历只能从首节点依次往后挨个进行,如果将尾节点的指针域指向首节点,那就得到了单向循环链表。
2.双向链表的特点就是每个节点有一个数据域和两个指针域,每个节点都有前驱和后继,双向链表也是可以创造各种复杂数据结构的一种链表,各种树状结构就是通过指针域疯狂的指出来的。(c语言的灵魂,就没指针指不出来的)
3.内核链表不同于上面两种链表,它没有数据域,只有两个指针域:前驱和后继在Linux内核中,有大量的链表结构来管理Linux内核的各种数据,这些链表可以在Linux/include/linux/list.h可以找到,确切来说可以直接拿过来用,里面的对链表的增删改查还有排序做的非常优秀。
标签:单链,linux,链表,内核,Linux,双链,节点,指针 From: https://www.cnblogs.com/XG-madman/p/18311180