目录
目录README.md

基于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命令,打印测试结果。 查看运行打印输出:

加载失败

如图所示,功能实现成功

关于

just for test the program

593.0 KB
邀请码