From 7601ef45fe936a71fd57c907665eedeb8f824775 Mon Sep 17 00:00:00 2001 From: pgh_dd <1041315949@qq.com> Date: Tue, 25 Jul 2023 23:01:25 +0800 Subject: [PATCH] =?UTF-8?q?=E2=80=9Ccotex-m3=E5=93=88=E5=B8=8C=E8=A1=A8?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Applications/app_test/test_hash/README.md | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 APP_Framework/Applications/app_test/test_hash/README.md diff --git a/APP_Framework/Applications/app_test/test_hash/README.md b/APP_Framework/Applications/app_test/test_hash/README.md new file mode 100644 index 000000000..81067fe91 --- /dev/null +++ b/APP_Framework/Applications/app_test/test_hash/README.md @@ -0,0 +1,91 @@ +# **热身赛一级赛题1:基于cortex-m3-emulator实现哈希表并测试验证** + +## 1. 简介 + +**基于矽璓模拟器cortex-m3-emulator,实现哈希表,支持链地址法解决哈希冲突,并编写测试程序在shell终端打印结果**。 + +## 2. 数据结构设计说明 + +​ 为实现链地址法解决冲突的哈希表,需要以下三个结构体,包括数据数据键值对单元,节点单元,和总体的哈希表。 + +```c +typedef struct ElementType +{ + int key;//键 + int value;//值 + int hash;//哈希值 +}ElementType; + +typedef struct Pnode +{ + ElementType *data;//链表节点 + struct Pnode *next;//下一个节点 +}Node; + +typedef struct HashTable +{ + int size;//哈希表数组大小 + int length;//哈希表当前长度 + struct Pnode *head;//哈希表数组 +}HashTableType; + +int Hash(int key);//计算哈希值 + +HashTableType* CreatTable(int table_size);//创建哈希表 + +Node *LookUp(HashTableType *h , int key);//根据键查找对应值 + +void Insert(HashTableType *h , ElementType k);//插入键值对 + +void DestroyTable(HashTableType *h);//销毁哈希表 + +void PrintTable(HashTableType *h);//打印哈希表的值 + +int Hash(int value); + +HashTableType* CreatTable(int table_size); + +Node *LookUp(HashTableType *h , int key); + +void Insert(HashTableType *h , ElementType k); + +void DestroyTable(HashTableType *h); + +void PrintTable(HashTableType *h); + + +``` + + + +## 3. 测试程序说明 + +​ 测试哈希表在插入一组数据的情况下表中数据的分布情况。 + +```c +void Test() +{ + ElementType a[]={{12,1},{2,2},{31,3},{45,4},{8,5}}; + + int n = sizeof(a)/sizeof(ElementType); + HashTableType *h = CreatTable(n);//测试创建哈希表 + int i = 0; + for(i = 0 ; idata->key); //查找key值为12的Element + printf("%d\n",h->length); //打印哈希表的元素个数 + DestroyTable(h); // 摧毁哈希表 +} +``` + + + +## 4. 运行结果(##需结合运行测试截图按步骤说明##) + +​ 哈希表中数据分布情况如图1所示。 + +![alt 图1](./img/testHash.png) +