哈希表设计

来源:互联网 发布:淘宝系统架构概述 编辑:程序博客网 时间:2024/04/28 20:22

#include<iostream>
#include<string>
using namespace std;
#define HASH_LENGTH 50               //哈希表的长度        
#define M 47                         //随机数
#define NAME_NO 30                   //人名的个数       
typedef struct     
{   char *py;    //名字的拼音
    int k;       //拼音所对应的整数
}NAME;
NAME NameList[HASH_LENGTH];    //全局变量NAME      
typedef struct    //哈希表
{   char *py;   //名字的拼音
    int k;      //拼音所对应的整数
    int si;     //查找长度
}HASH;
HASH HashList[HASH_LENGTH];        //全局变量HASH                    
void InitNameList() //姓名(结构体数组)初始化         
{   char *f;
    int r,s0,i;
    NameList[0].py="baojie";
    NameList[1].py="chengaoyang";
    NameList[2].py="chenguangzhong";
    NameList[3].py="chenliangliang";
    NameList[4].py="chenyongzhou";
    NameList[5].py="fengchao";
    NameList[6].py="gexiangfeng";
    NameList[7].py="huting";
    NameList[8].py="huangpinjin";
    NameList[9].py="jiangxiaojia";
    NameList[10].py="laidongjie";
    NameList[11].py="liyexiao";
    NameList[12].py="lidaohui";
    NameList[13].py="lijue";
    NameList[14].py="lizhuoqun";
    NameList[15].py="linfujun";
    NameList[16].py="luobin";
    NameList[17].py="luokeqing";
    NameList[18].py="nichao";
    NameList[19].py="panhuafeng";
    NameList[20].py="sijun";
    NameList[21].py="songzhanhui";
    NameList[22].py="sunzhengqing";
    NameList[23].py="wanghaofeng";
    NameList[24].py="wangjunshuai";
    NameList[25].py="wangqinde";
    NameList[26].py="wangzejun";
    NameList[27].py="wangkeke";
    NameList[28].py="weixing";
    NameList[29].py="wurenke";

    for(i=0;i<NAME_NO;i++)
{   s0=0;
        f=NameList[i].py;
        for(r=0;*(f+r)!='/0';r++)
    /* 方法:将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字*/
            s0=*(f+r)+s0;
        NameList[i].k=s0;
}
}
void CreateHashList() //建立哈希表  
{ int i;
    for(i=0; i<HASH_LENGTH;i++)
{   HashList[i].py="";
        HashList[i].k=0;
        HashList[i].si=0;
}
    for(i=0;i<HASH_LENGTH;i++)
{   int sum=0;
        int adr=(NameList[i].k)%M;  
   //哈希函数
        int d=adr;
        if(HashList[adr].si==0)     //如果不冲突
   { HashList[adr].k=NameList[i].k;
           HashList[adr].py=NameList[i].py;

注:数据结构严蔚敏版实习报告

原创粉丝点击