链地址处理哈希冲突方法
来源:互联网 发布:淘宝食品店需要什么 编辑:程序博客网 时间:2024/06/05 05:31
基本原理就是:将地址冲突的一些不同的值,挂在同一条链表上。
举例代码如下:
//哈希表/*链地址发处理哈希冲突2015年8月24日09:19:49*/#include<stdio.h>#include<malloc.h>#include<string.h>typedef struct node{ char *name ; char *desc ; struct node *next ;}node ;static node * nodelist[100];//哈希表void inithashtab( ){ int i = 0 ; for (i;i<100 ; i++ ){ nodelist[i] = NULL ; }}unsigned int hash(char *name){ int sum = 0 ; while (*name) sum+=*(name++); return sum%100 ;}node* lookup(char *s){//确保相同的name对应相同的desc int i = hash(s); node *np = nodelist[i] ; for ( ; np ; np=np->next){ if (!strcmp(np->name,s)) return np; } return NULL;}char *get_str (char *s){ int s_l = strlen(s) ; s_l++; char *t = (char *)malloc(sizeof(char)*s_l); strcpy(t,s); return t;}int install(char *name ,char *desc){ int i = hash(name) ; node *np; if ((np=lookup(name))!=NULL){ free(np->desc); np->desc =get_str(desc); }else{//插入新节点 // printf("1"); np = (node *)malloc(sizeof(node)); np->name = get_str(name); np->desc = get_str(desc); np->next = nodelist[i] ; nodelist[i] = np ; } return 1;}char *get (char *name){ int pos = hash(name ); node *np = NULL ; np = lookup(name); if (!np){ return NULL; }else{ // printf("desc: %s\n",np->desc); return np->desc; }}int main (){ inithashtab(); // printf("%s",get_str("124")); install("name","desc") ; install("nbmd","aaaa"); install("name","bbbb"); char *s = get("name"); printf("%s\n" , s); printf("%s",get("nbmd")); return 0 ;}
1 1
- 链地址处理哈希冲突方法
- 链地址处理哈希冲突的哈希表
- 散列表(二):冲突处理的方法之链地址法的实现(哈希查找)
- 散列表(二):冲突处理的方法之链地址法的实现(哈希查找)
- 用链地址法处理冲突,构建哈希表:假设哈希表长为m,哈希函数为H(x),用链地址法处理冲
- 处理哈希(HASH)冲突的方法
- 采用链地址法处理冲突构造哈希表
- (6)散列冲突处理:链地址法
- 采用链地址法处理冲突构造哈希表
- 采用链地址法处理冲突构造哈希表
- 采用链地址法处理冲突构造哈希表
- (6)散列冲突处理:链地址法
- POJ 2002 Squares hash+链地址法处理冲突
- 哈希表(链地址法处理冲突)(1012)
- 哈希桶处理哈希冲突
- 哈希桶处理哈希冲突
- 哈希表链地址法解决冲突
- 一种处理同一个I2C总线上,器件地址冲突的方法
- 什么是回归分析
- User Defined Runtime Attributes
- 用GDI+画长方体
- iOS学习笔记15- 直接拿来用!最火的iOS开源项目(一)
- 表单域规范写法
- 链地址处理哈希冲突方法
- Java学习博客地址
- POJ 3740 Easy Finding (DLX模板)
- strstr函数的实现
- fax T30 T38协议二进制分析
- 解决listCtrl 无法显示列头的问题
- 打印字符串中重复的字符
- activiti5.17使用自定义的user和group表的几种方法
- java中substring的用法