多语言展示
当前在线:517今日阅读:26今日分享:39

如何建立基数树

在Linux内核里面有很多很多的库和函数,形成了很多数据结构和算法,今天研究一种数据结构,也就是基数树,有两个文件lib/radix-tree.c和include/linux/radix-tree.h可以实现。
工具/原料
1

计算机

2

虚拟机

方法/步骤
1

首先介绍一下基数树,是一种二进制的压缩的字典树,深度是32位,主要应用在ip查找上面,是一种以关联数组接口的数据结构,字典树的节点存储单个字符的标签,Linux 内核中的基数树是把值映射到整形键的一种数据结构。

2

要建立基数树就需要从结构上下手,先结构初始化,然后进行RADIX_TREE 宏,传递name的参数,通过RADIX_TREE 宏定义和初始化基数树的名称。

3

在RADIX_TREE 宏进行之前,需要给定义的名称再一次定义,定义为radix_tree_root的结构体实例,用mask去调用函数,使用RADIX_TREE_INIT 宏对定义的结构体实例进行初始化。

4

或者进行手动定义结构体实例,这里把结构体定义为radix_tree_root,利用如图的代码实现,定义之后把它和mask一起上传给INIT_RADIX_TREE 宏。

5

其实在一刚开始就应该先定义INIT_RADIX_TREE 宏,但是最后定义可以修改,提前定义修改比较麻烦,还是将INIT_RADIX_TREE 宏进行初始化,代码实现如图。

6

最后进行建立基数的根和引键,需要两个函数radix_tree_lookup和radix_tree_lookup_slot,一个在树中查找给定的键,一个起到返回包含数据的指针,返回的是记录的个数。 results 中的结果,按键排序,并从第一个索引开始。返回的记录个数将不会超过max_items 的值。

推荐信息