简单实现hash存储
来源:互联网 发布:命令行进入linux mysql 编辑:程序博客网 时间:2024/04/30 23:43
使用RSHash进行hash处理
#include <stdio.h>#include <stdlib.h>#define MAX_NUM 100struct person{char *name;int age;};struct store_person{struct person *per;struct store_person *next;const char *key;};struct store_person *stuff;unsigned int RSHash(const char *str);void hash_set(const char *key, struct person *per);struct person* hash_get(const char *key);void freesource();int main(int argc, char *argv[]){ stuff = (struct store_person*)malloc(sizeof(struct store_person) * MAX_NUM);if(stuff == NULL)return -1;struct person pvalue1;pvalue1.name = "haha";pvalue1.age = 18;hash_set("key1", &pvalue1);struct person pvalue2;pvalue2.name = "xixi";pvalue2.age = 20;hash_set("key2", &pvalue2);struct person pvalue3;pvalue3.name = "lala";pvalue3.age = 12;hash_set("key3", &pvalue3);struct person *p = hash_get("key2");printf("person->name=%s and person->age=%d\n", p->name,p->age);freesource(); return 0;}unsigned int RSHash(const char *str) { unsigned int b = 378551; unsigned int a = 63689; unsigned int hash = 0; while (*str) { hash = hash * a + (*str++); a *= b; } return (hash & 0x7FFFFFFF); } void hash_set(const char *key, struct person *per){int pos = RSHash(key) % MAX_NUM;struct store_person *store = &stuff[pos];if(store->key == NULL){store->key = key;store->per = per;printf("store ok ,position is %d\n", pos);return;}}struct person* hash_get(const char *key){int pos = RSHash(key) % MAX_NUM;struct store_person *store = &stuff[pos];if(store->key != NULL){return (store->per);}}void freesource(){free(stuff);stuff = NULL;printf("free ok\n");}
有关hash函数,请参考前一篇
0 0
- 简单实现hash存储
- C语言 开放寻址法HASH表存储简单实现
- hash表简单实现
- C++简单实现hash table
- hash存储
- 数据结构——简单Hash Table实现
- 初步实现一个简单的Hash表
- 非同步HASH结构的简单实现
- HASH算法的简单实现及测试
- 一致性Hash算法介绍及简单实现
- 使用PHP实现简单Hash表
- 一致性hash的简单实现案例
- php实现简单key-value hash数据库
- 数据结构之hash表,HashMap简单实现
- 一致性hash的c++简单实现
- memcache一致hash算法简单实现
- 简单通俗地理解Hash哈希存储
- 简单Hash
- 挑战程序员---三角形
- SaaS平台开发人员和SaaS应用开发人员的分化对他们的技术结构有哪些不同的要求?这两类开发人员都需要具备哪些知识呢?
- 动态数组使用
- SharePoint菜鸟开发旅程
- js图片滚动,鼠标经过滚动停止效果
- 简单实现hash存储
- 新年奉献MVC+EF(CODEFIRST)+EASYUI医药MIS系统
- Bluetooth HID device 鼠标模拟触摸屏以及Android的back,home键的实现
- iOS开发的22个奇谲巧技
- 编写跨平台Java程序注意事项
- python之正则匹配
- 提供给开发者 10 款最好的 Python IDE
- java读取和遍历properties文件并根据key进行排序
- jQuery通过class属性获取对象(class的值有两个的时候)