数据结构之直接存取文件(散列文件)

直接存取文件是利用哈希函数组织的文件,类似哈希表,但文件记录成组存放。每个存储单位称为桶,处理冲突主要采用链地址法。查找过程涉及基桶和溢出桶,查找时间与装载因子α有关。直接存取文件优点包括快速存取和节省存储空间,但不支持顺序存取和复杂查询,且文件结构可能因插入删除操作变得不合理。
摘要由CSDN通过智能技术生成

        直接存取文件指的是利用杂凑(Hash)法进行组织的文件。它类似于哈希表,即根据文件中关键字的特点设计一种哈希函数和处理冲突的方法将记录散列到存储设备上,故又称散列文件。

        与哈希表不同的是,对于文件来说,磁盘上的文件记录通常是成组存放的。若干个记录组成一个存储单位,在散列文件中,这个存储单位叫做桶(Bucket)。假若一个桶能存放m个记录,这就是说,m个同义词的记录可以存放在同一地址的桶中,而当第m+1个同义词出现时才发生“溢出”。处理溢出也可采用哈希表中处理冲突的各种方法,但对散列文件,主要采用链地址法。

        当发生“溢出”时,需要将第m+1个同义词存放到另一个桶中,通常称此桶为“溢出桶”;相对地,称前m个同义词存放的桶为“基桶”。溢出桶和基桶大小相同,相互之间用指针相链接。当在基桶中没有找到待查记录时,就顺指针所指到溢出桶中进行查找。因此,希望同一散列地址的溢出桶和基桶在磁盘上的物理位置不要相距太远﹐最好在同一柱面上。例如,某一文件有18个记录,其关键字分别为278,109,063,930,589,184,505,269,008,083,164,215,330,810,620,110,384,355。桶的容量m=3,桶数b=7。用除留余数法作哈希函数H(key)=key MOD7。由此得到的直接存取文件如图1所示。

图1 直接存取文件示例

        在直接文件中进行查找时,首先根据给定值求得哈希地址(即基桶号),将基桶的记录读入内存进行顺序查找,若找到关键字等于给定值的记录,则检索成功;否则,若基桶内没有填满记录或其指针域为空,则文件内不含有待查记录﹔否则根据指针域的值的指示将溢出桶的记录读入内存继续进行顺序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值