基于cortex-m3-emulator实现哈希表并测试验证
1. 简介
利用c语言实现了哈希表(HashMap),包括添加键值对(Put),获取键对应的值(Get), 删除健(Delete),清空哈希表(Clear), 迭代遍历哈希表(hashMapIterator)等功能
操作。
利用数组(Entry)作为存储空间,利用链表(*next)解决冲突。当哈希表的大小超过数组大小后,为避免发生冲突过多的情况,可以对哈希表扩容。
2. 数据结构设计说明
1.键值对结构
typedef struct entry {
void * key; // 键
void * value; // 值
struct entry * next; // 冲突链表
}*Entry;
2.哈希结构
typedef struct hashMap {
int size; // 当前大小
int listSize; // 有效空间大小
HashCode hashCode; // 哈希函数
Equal equal; // 判等函数
Entry list; // 存储区域
Put put; // 添加键的函数
Get get; // 获取键对应值的函数
Remove remove; // 删除键
Clear clear; // 清空Map
Exists exists; // 判断键是否存在
Boolean autoAssign; // 设定是否根据当前数据量动态调整内存大小,默认开启
}*HashMap;
3.包括以下函数功能,分别为:
createHashMap:创建一个哈希结构
defaultPut:添加键值对
defaultGet:获取键对应值
defaultRemove:删除指定键的键值对
defaultExists:判断键值是否存在
defaultClear:清空Map的函数类型
resetHashMap:重新构建哈希表
3. 测试程序说明
1.测试了哈希表的插入键值对(Put)
2.判断键是否存在(Exist)
3.获取键对应的值(Get)
4.删除健(Delete)
5.迭代遍历哈希表(hashMapIterator)
6.清空哈希表(Clear)等操作。
7.链地址法解决哈希冲突的示例:两个不同的人(Bob和Li Ming)的hashcode相同。
4. 运行结果
1.在VScode命令终端中执行以下命令,在menuconfig界面输入(/)查找test_hash位置
cd ./Ubiquitous/XiZi_IIoT
make BOARD=cortex-m3-emulator distclean
make BOARD=cortex-m3-emulator menuconfig

2.在menuconfig界面配置需要关闭和开启的功能,这里将test_hash开启(y),保存后双击快捷键ESC退出配置

3.继续执行以下命令,进行编译,生成配置文件
make BOARD=cortex-m3-emulator

4.编译正确无误,产生XiZi-cortex-m3-emulator.elf、XiZi-cortex-m3-emulator.bin文件。

5.通过以下命令启动qemu模拟Xiuos操作系统并加载XiUOS ELF文件
qemu-system-arm -machine lm3s6965evb -nographic -kernel build/XiZi-cortex-m3-emulator.elf

6.输入help,验证TestHash注册Shell命令

7.执行TestHash命令,打印测试结果。
查看运行打印输出:

如图所示,功能实现成功
基于cortex-m3-emulator实现哈希表并测试验证
1. 简介
利用c语言实现了哈希表(HashMap),包括添加键值对(Put),获取键对应的值(Get), 删除健(Delete),清空哈希表(Clear), 迭代遍历哈希表(hashMapIterator)等功能 操作。
利用数组(Entry)作为存储空间,利用链表(*next)解决冲突。当哈希表的大小超过数组大小后,为避免发生冲突过多的情况,可以对哈希表扩容。
2. 数据结构设计说明
1.键值对结构
2.哈希结构
3.包括以下函数功能,分别为:
3. 测试程序说明
1.测试了哈希表的插入键值对(Put) 2.判断键是否存在(Exist) 3.获取键对应的值(Get) 4.删除健(Delete) 5.迭代遍历哈希表(hashMapIterator) 6.清空哈希表(Clear)等操作。 7.链地址法解决哈希冲突的示例:两个不同的人(Bob和Li Ming)的hashcode相同。
4. 运行结果
1.在VScode命令终端中执行以下命令,在menuconfig界面输入(/)查找test_hash位置
2.在menuconfig界面配置需要关闭和开启的功能,这里将test_hash开启(y),保存后双击快捷键ESC退出配置
3.继续执行以下命令,进行编译,生成配置文件
4.编译正确无误,产生XiZi-cortex-m3-emulator.elf、XiZi-cortex-m3-emulator.bin文件。
5.通过以下命令启动qemu模拟Xiuos操作系统并加载XiUOS ELF文件
6.输入help,验证TestHash注册Shell命令
7.执行TestHash命令,打印测试结果。 查看运行打印输出:
如图所示,功能实现成功