hash表线性探测法
来源:互联网 发布:拳王阿里 电影 百度云 编辑:程序博客网 时间:2024/04/29 16:31
准备把最近写的一些代码一一贴出来,也算是总结吧。只能怪大学时候写的代码很少,所以读研疯狂写代码,把数据结构里面的所有东西都实现了一遍,包括图论中里面的算法。
//hash table 的线性探测法,进行溢出处理#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX_CHAR 10 // 字符串的最大大小#define TABLE_SIZE 13 //hash table的大小typedef struct Hash{char key[MAX_CHAR];//other fields}element;element hash_table[TABLE_SIZE];void InitHashTable(element ht[]){int i;for( i=0 ; i<TABLE_SIZE ;i++)ht[i].key[0]='\0';}int Transform(char * key){int number=0;while(*key){number+=*key;key++;}return number;}int hash(char *key){return (Transform(key) % TABLE_SIZE );}void LinearInsert(element item ,element ht[]){int hash_value=hash( item.key);int i=hash_value;while( ht[i].key[0]!='\0' ) //该散列桶里已有填充{if(strcmp(item.key ,ht[i].key )==0)//桶里该标识符已存在{fprintf(stderr,"the identifier %s exists\n",item.key);return;}i=(i+1)%TABLE_SIZE;if(i==hash_value){fprintf(stderr,"the hash table is full\n"); return;}}ht[i]=item;}int main(){InitHashTable(hash_table);element identifier[20];strcpy(identifier[0].key,"for");strcpy(identifier[1].key,"do");strcpy(identifier[2].key,"while");strcpy(identifier[3].key,"if");strcpy(identifier[4].key,"else");strcpy(identifier[5].key,"function");int i;for(i=0;i<6;i++)LinearInsert( identifier[i] ,hash_table); for(i=0;i<TABLE_SIZE;i++)printf("%d. %s\n", i, hash_table[i].key); LinearInsert( identifier[1] ,hash_table); strcpy(identifier[7].key,"int");strcpy(identifier[8].key,"double");strcpy(identifier[9].key,"float");strcpy(identifier[10].key,"extern");strcpy(identifier[11].key,"char *");strcpy(identifier[12].key,"auto"); strcpy(identifier[13].key,"continue");strcpy(identifier[14].key,"break");strcpy(identifier[15].key,"static"); for(i=7;i<=15;i++)LinearInsert( identifier[i] ,hash_table); for(i=0;i<TABLE_SIZE;i++)printf("%d. %s\n", i, hash_table[i].key);return 1;}
0 0
- hash表线性探测法
- 线性探测法hash
- 线性探测法构造hash表
- Hash线性探测法C++实现
- 线性探测法构造哈希表(hash)
- 线性探测-Hash表的创建-查找
- Java实现hash表,线性探测,二次探测,再哈希法,链表法
- hash冲突之线性探测
- 建立Hash表(散列表)(运用线性探测法解决冲突)
- 开放定址法(线性探测),拉链法 -Hash算法
- hash线性探测开放定址法解决冲突
- 平方探测法hash
- POJ 1186 hash 线性探测再散列
- Hash解决冲突之线性探测
- 哈希表---线性探测法
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
- 散列表--线性探测法
- 线性探测法构建哈希表
- Oracle提高查询效率方法总结
- 字节码指令概览
- UVA 712(二叉树模拟)
- 项目中发现的问题以及项目管理
- Linux下Android SDK中adb找不到的解决方案
- hash表线性探测法
- 包含min函数的栈
- “房价限降令”推出背后有啥难言之隐?
- 计算机语言学习选择。我对编程语言的选择上所存在困惑的自问自答。
- lsit的操作
- c语音输出菱形
- 如何对memcache的数据(key-value)进行遍历操作
- TURBO8051 寄存器和存储器的区别
- unbuntu adb 配置