哈希表操作一 、查找、插入等方法理论知识的理解。,本实验是采用的是除留余数法创建。,本实验用的是线性探测再散列的方法。。二 ,哈希表的创建思想是由哈希函数得到,本实验就采用了除留余数法创建哈希表。,本实验是需要插入单词,所以需要调用string函数库,通过每个单词的地址数来进行下一步的查找计划。当插入单词地址已经存在时,就产生了冲突,因此需要采用线性探测再散列的方式来解决冲突。,因此需要输出整个哈希表。,当所有单词查找结束,查找长度也得出。,程序需要采用模块化进行设计。三 :voidInitwordlist(intn) 初始化哈希表操作结果:以字符形式插入单词,将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字。voidCreatehashlist(intn) 创建哈希表,并插入单词操作结果:(1)用除留余数法构建哈希函数;(2)用线性探测再散列处理冲突。voidfind() 查找哈希表中的单词操作结果:在哈希表中进行查找,输出查找的结果和关键字,并计算和输出查找成功的平均查找长度。voidprinthash() 显示哈希表操作结果:显示哈希表的存储情况:位置%d\t\t关键字%-6d\t\t单词%s\n。floataverage()操作结果:计算出平均查找长度。voidmenu() 菜单函数设计操作结果:显示格式:1向哈希表中插入单词(<15); 2查找哈希表中的单词; 3显示哈希表的存储情况; 4计算哈希表的平均查找长度; 5退出程序。intmain() 主程序设计操作结果:通过调用各个函数操作得到结果。:10111000四 :#defineHASH_LEN15 //HASH_LEN长度定义为15#defineM13 //:WORDwordlist[HASH_LEN];//全局变量typedefstruct{ charword[15];//输入的单词intnumber;//单词所对应的整数}WORD;typedefstruct{ char*word;//存储输入的单词intnumber;//单词所对应的整数intnumofseek;//查找的次数}HASH;HASHhashlist[HASH_LEN];//(intn){inti,j;char*w;//设立一个指针,指向单词的地址for(i=0;i<n;i++){ intsum=0;//存放单词地址printf("请输入第%d个单词(按回车结束):",i+1);gets(wordlist[i].word);//输入单词w=wordlist[i].word;//取地址for(j=0;*(w+j)!=0;j++)//将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字sum=sum+*(w+j);wordlist[i].number=sum;//存入每个单词的存放地址,即关键字}(intn)//创建哈希表,并插入单词{ inti;for(i=0;i<HASH_LEN;i++){hashlist[i].word="";//输入单词hashlist[i].number=0;//关键字hashlist[i].numofseek=0;//查找次数}for(i=0;i<n;i++){ intaddress,sum=0;address=wordlist[i].number%M; //除留余数法,将单词插入到哈希表中
哈希表的操作 来自淘豆网m.daumloan.com转载请标明出处.