对于一个计算机专业的学生,链表这种数据结构对我们来说再熟悉不过了,毕竟在大学的《数据结构》中就讲解过,相信你也自己实现过,它实现起来可能是这个样子:(这里的例子都来自《Linux内核设计与实现》第三版)
假定我们有一个数据结构来描述犬科动物中的一员
- struct fox
- {
- unsigned long tail_length;
- unsigned long weight;
- bool is_fantastic;
- }
- struct fox
- {
- unsigned long tail_length;
- unsigned long weight;
- bool is_fantastic;
- struct fox *next;
- struct fox *prev;
- }
1.链表数据结构
在过去,内核中有很多链表的实现,该选一个既简单,又高效的链表来统一它们了。
链表代码在头文件<linux/list.h>中声明,其数据结构很简单:
- struct list_head
- {
- struct list_head *next;
- struct list_head *prev;
- }
- struct fox
- {
- unsigned long tail_length;
- unsigned long weight;
- bool is_fantastic;
- struct list_head list;
- }