本文主要是介绍SylixOS中的哈希链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概念
哈希链表又称散列表
,是为了加快结点查询而设计的一种数据结构。本质上是哈希和链表的结合体。
原理
基本原理是:把需要查询的关键字通过映射函数(散列函数)映射到相应的存储地址,然后直接访问结点。需要存储或者查询的结点一般称为关键字(Key value),而这个映射函数一般称为散列函数,映射到的存储地址一般称为散列表。
数据结构
哈希链表数据结构定义:
typedef struct __hlist_node { struct __hlist_node *HNDE_phndeNext; struct __hlist_node **HNDE_pphndePrev;
} LW_HLIST_NODE; typedef struct __hlist_head { struct __hlist_node *HLST_phndeFirst;
} LW_HLIST_HEAD;
哈希链表的散列函数在libsylixos/sylixos/shell/hashlib/hashHorner.c文件中定义。
INT __hashHorner (CPCHAR pcKeyword, INT iTableSize);
哈希散列函数,使用horner多项式。哈希表的大小最好为素数,这样散列的效果最好。本算法专为变量管理器和shell管理器设计,采用一阶散列表进行搜索。
SylixOS内核中系统查找全局符号表,查找、导出符号以及shell系统的关键字管理等多处地方使用到哈希一级散列表确定关键字位置,再通过其他链表的操作查找具体的内容。
这篇关于SylixOS中的哈希链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!