首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
在用除余法作为散列函数线性探测解决冲突的散列表中,写一删除关键字的算法,要求将所有可以前移的元素前移去填充被删除的空位,以保证探测序列不至于断裂。
在用除余法作为散列函数线性探测解决冲突的散列表中,写一删除关键字的算法,要求将所有可以前移的元素前移去填充被删除的空位,以保证探测序列不至于断裂。
admin
2019-08-15
65
问题
在用除余法作为散列函数线性探测解决冲突的散列表中,写一删除关键字的算法,要求将所有可以前移的元素前移去填充被删除的空位,以保证探测序列不至于断裂。
选项
答案
首先计算关键字的散列地址,若该地址为空,则空操作;若该地址有关键字,但与给定值不等,则用解决冲突的方法去查找给定值;若该地址有关键字且与给定值相等,则执行删除。题目要求将所有可以前移的元素前移去填充被删除的空位,以保证探测序列不断裂。由于用线性探测解决冲突,设被删除元素的散列地址为i,则其余m一1(m为表长)个位置均可能是同义词。查找同义词的操作直到碰到空地址或循环一圈回到i才能结束。为了提高算法效率,减少数据移动,应将最后一个同义词前移填充被删除关键字。 void HsDelete(rectype HS[],K){ //在以除余法为散列函数线性探测解决冲突的散列表HS中,删除关键字K int i=K%P; //以造表所用的除余法计算关键字K的散列地址 if(Hs[i]==null){printf(”散列表中无被删关键字”);exit(0); } //此处null代表散列表初始化时的空值 switch(Hs[i]==k){ case true:del(HS,i,j,K);break; case false:di=l;j=(i+di)%m; //m为表长 while(Hs[j]!=null&&HS[j]!=K&&j!=i){ //查找关键字K di=di+1: j=(i+di)%m; } if(HS[j]==K)del(HS,i,j,K); else{printf(”散列表中无被删关键字”);exit(0);} }//switch } void del(rectype HS[],in i,int j,rectype K){ //在散列表HS中,删除关键字K,K的散列地址是i,因解决冲突而将其物理地 //置于表中位置j。算法查找关键字K的同义词,将其最后一个同义词移到位置j, //并将其同义词的位置置空 di=1;last=j;x=(j+di)%m; //探测地址序列,last记K的最后一个同义词的位置 while(x!=i){ //可能要探测一圈 if(HS[x]==null)break; //探测到空位置,结束探测 else if(HS[x]%P==i)last=x; //关键字K的同义词 di=di+1;x=(j+di)%m; //取下一地址探测 } HS[j]=HS[last]; HS[last]=null; //将哈希地址last的关键字移到哈希地址j } 算法讨论:由于用线性探测解决冲突,可能发生“二次聚集”(两个第一哈希地址不同的记录争夺同一后继哈希地址)。像上面这样处理后,对于哈希地址为i的记录没有问题了,但由于将地址j置空,有可能截断了其他记录的探测通路。最明显的是哈希地址为j的记录就查不到了。解决的办法是继续调整,直到当前哈希表中的每个记录的查找都是正确的为止。这里不再深入讨论。
解析
转载请注明原文地址:https://www.kaotiyun.com/show/o0Ci777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
保加利亚共产党于1990年4月改名为保社会党,它在政府中沦为少数派的时间是()。
经六朝时期的发展,南方形成了三个农业发达地区即()。
三个进程P1、P2、P3互斥使用一个包含N(N>O)个单元的缓冲区。P1每次用produce()生成一个正整数并用put()送入缓冲区某一空单元中;P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用getev
Demandpaging算法是paging算法在虚拟存储空间管理的扩展。其主要的改进是:仅当需要访问某页面时,如果它不在内存,把它调入内存。按照这个思路,将segmentation算法(段式存储管理算法)扩展到虚拟存储空间管理,也可以产生类似的算法,不妨
既考虑作业等待时间又考虑作业执行时间的调度算法是()。
某机字长32位,它的存储容量为256MB,按字节编址,则它的寻址范围大小为()。
以数组Data[m+1]作为循环队列SQ的存储空间,front为头指针,rear为队尾指针,则执行出队操作的语句是()。
已知散列函数为H(key)=key%11,处理冲突的方法为二次探测法,探测的序列为:1,-1,4,-4,…,j2,-j2(j<=m/2)。当di>0时,Hi=(H(key)+di)%m当di<0时,Hi=(H(key)+di+m)%m散列
在一个双链表中,在*p结点之前插入*q结点的操作是()。
设有一个双向链表h,每个结点中除有prior,data和next三个域外,还有一个访问频度域freq,在链表被起用之前,每个结点中的freq域都被初始化为零。每当进行LocateNode(h,x)运算时,令元素值为x的结点中freq域中的值加一,并调整表中
随机试题
1855年5月,英国新上台的内阁颁发了枢密院令,成立______,办理各级公务员的选拔考试事宜,从而为英国最终形成公务员制度奠定了基础。
部门平均劳动生产率提高之后,会导致单位商品的价值量()
可出现胆囊显著肿大无压痛,伴黄疸进行性加重的疾病是
关于项目投资现金流量表的说法,错误的是()。
权益性融资的资本成本比债务性融资的资本成本低的原因是:在权益性投资中,投资者要承担( ),这是债权人相对无需直接面对的。
商业票据市场的特征有()。
两千多年前,丝绸之路上重要的中转贸易站楼兰极尽繁华。然而,这座举世闻名的“大都市”却于公元500年左右_________在漫漫黄沙中。不少研究者将_________楼兰文明的祸首归结为环境的急剧恶化。依次填入画横线部分最恰当的一项是()
马克思在评论鸦片战争时说,“在这场决斗中,陈腐世界的代表是激于道义,而最现代的社会的代表却是为了获得贱买贵卖的特权——这真是任何诗人想也不敢想的一种奇异的对联式悲歌。”中国近代史上一共有两次鸦片战争,两次鸦片战争使1日中国逐步沦为半封建半殖民地社会。通过两
Directions:Inthisparty,youareaskedtowriteanessayaccordingtotheinformationbelow.Youshouldwritemorethan150
学校图书馆规定,一名旁听生同时只能借一本书,一名在校生同时可以借5本书,一名教师同时可以借10本书,在这种情况下,读者与图书之间形成了借阅关系,这种借阅关系是
最新回复
(
0
)