全球旧事资料 分类
”数组的实际大小要选择一个素数,因为这将使一般的杂凑函数运行得更好。杂凑函数。在符号表实现中使用的杂凑函数将字符串标识符名转换成0size1范围内的一个整数。一般这通过3步来进行。首先,字符串中的每个字符转换成一个非负整数。然后,这些整数用一定的方法组合形成一个整数。最后,把结果整数调整到0size1范围内。冲突的一个好的解决办法是,当加上下一个字符的值时,重复地使用一个常量作为乘法因子。因此,如果ci是第i个字符的数字值,hi是在第i步计算的部分杂凑值,那么hi根据下面的递归公式计算,h00,hi-1ahi-ci,最后的杂凑值用hh
modsize计算。这里
是杂凑的名字中字符的个数。这等价于下列公式当然,在这个公式中a的选择对输出结果有重要影响。a的一种合理的选择是2的幂,如16或128,这样乘法可以通过移位来完成。该程序a选16,size取211。
f由于在数据结构方面为了实现很方便的进行查找,插入,删除等操作。我们把它的数据结构设计成一哈稀表结构,哈稀表的查找,插入等操作是飞快的。我们所设计的哈稀结构符号表是参考教科书上P295它的结构如下:
符号表的杂凑函数defi
eSIZE211defi
eSHIFT4i
thashcharkeyi
ttemp0i
ti0whilekeyi0temptempSHIFTkeyiSIZEiretur
temp该符号表完成了插入voidst_i
sertchar
amei
tli
e
oi
tloc、查找i
tst_lookupchar
ame工作源程序:symtabci
cludestdiohi
cludestdlibhi
cludestri
ghi
clude
好听全球资料 返回顶部