“cotex-m3哈希表测试”
This commit is contained in:
parent
d8021b55f8
commit
7601ef45fe
|
@ -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 ; i<n ; i++)
|
||||
{
|
||||
Insert(h,a[i]);//测试插入键值对
|
||||
}
|
||||
PrintTable(h); // 打印哈希表
|
||||
printf("%d\n\n", LookUp(h,12)->data->key); //查找key值为12的Element
|
||||
printf("%d\n",h->length); //打印哈希表的元素个数
|
||||
DestroyTable(h); // 摧毁哈希表
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 4. 运行结果(##需结合运行测试截图按步骤说明##)
|
||||
|
||||
哈希表中数据分布情况如图1所示。
|
||||
|
||||

|
||||
|
Loading…
Reference in New Issue