课程设计:哈希表操作 30
建立一个哈希表,哈希函数为除留余数法,处理冲突的方法为线性探测再散列或二次探测再散列。往哈希表中依次存入插入多个单词。显示哈希表的存储情况。计算哈希表的平均查找长度。程序...
建立一个哈希表,哈希函数为除留余数法,处理冲突的方法为线性探测再散列或二次探测再散列。
往哈希表中依次存入插入多个单词。
显示哈希表的存储情况。
计算哈希表的平均查找长度。
程序模块化设计。
急!!急!!!急!!!! 展开
往哈希表中依次存入插入多个单词。
显示哈希表的存储情况。
计算哈希表的平均查找长度。
程序模块化设计。
急!!急!!!急!!!! 展开
1个回答
展开全部
PASCAL语言 不知您能否看懂
function bkd(ss:string):longint;//哈希函数
var i:longint;
begin
bkd:=0;
for i:=1 to length(ss) do
bkd:=((bkd*131+ord(ss[i])) and $FFFFFFF) mod 999997;
end;
function find(ss:string):longint;//查找操作
var j:longint;
begin
j:=hash[num];//哈希表的头指针
while (j>0) and (list[j]<>ss) do j:=next[j];//拉链探测,相当于一个桶来处理冲突
exit(j);//返回在线性表中的位置
end;
procedure insert(ss:string);//插入操作,SS为插入元素,以字符串的形式存储
var j:longint;
begin
inc(loc);
list[loc]:=ss;//线性表
next[loc]:=hash[num];//链到对应哈希值的桶上
hash[num]:=loc;
end;
哈希值计算:NUM:=BKD(SS) MOD OO;oo就是你要除余得数
function bkd(ss:string):longint;//哈希函数
var i:longint;
begin
bkd:=0;
for i:=1 to length(ss) do
bkd:=((bkd*131+ord(ss[i])) and $FFFFFFF) mod 999997;
end;
function find(ss:string):longint;//查找操作
var j:longint;
begin
j:=hash[num];//哈希表的头指针
while (j>0) and (list[j]<>ss) do j:=next[j];//拉链探测,相当于一个桶来处理冲突
exit(j);//返回在线性表中的位置
end;
procedure insert(ss:string);//插入操作,SS为插入元素,以字符串的形式存储
var j:longint;
begin
inc(loc);
list[loc]:=ss;//线性表
next[loc]:=hash[num];//链到对应哈希值的桶上
hash[num]:=loc;
end;
哈希值计算:NUM:=BKD(SS) MOD OO;oo就是你要除余得数
追问
我们没有学这个语言。。。
有用C语言或者C++的么?要原创的
追答
上面这是我自己写的,我不会C额,不过这个PASCAL语言是最好懂的语言,既然你会C,肯定能读懂PASCAL
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询