问答题

[说明]
散列文件的存储单位称为桶(BUCKET)。假如一个桶能存放m个记录,当桶中已有m个同义词(散列函数值相同)的记录时,存放第m+1个同义词会发生“溢出”。此时需要将第m+1个同义词存放到另一个称为“溢出桶”的桶中。相对地,称存放前m个同义词的桶为“基桶”。溢出桶和基桶大小相同,用指针链接。查找指定元素记录时,首先在基桶中查找。若找到,则成功返回,否则沿指针到溢出桶中进行查找。
例如,设散列函数为Hash(Key)=Key mod7,记录的关键字序列为15,14,21,87,96,293,35,24, 149,19,63,16,103,77,5,153,145,356,51,68,705,453,建立的散列文件内容如图2-27所示。


为简化起见,散列文件的存储单位以内存单元表示。
函数InsertToHashTable(int NewElemKey)的功能是:若新元素NewElemKey正确插入散列文件中,则返回值0;否则返回值-1。
采用的散列函数为Hash(NewElemKey)=NewElemKey%P,其中P设定基桶的数目。
函数中使用的预定义符号如下。



【参考答案】

这是一道要求读者掌握如何在散列文件中插入一个新的数据元素的编程题。本题的解答思路如下。
在散列文件中插入一个新......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
[问题1] 这是一道要求读者掌握如何从问题域中抽象出类的属性的综合分析题。本题的解答思路如下。 ①首先要仔细理解题目中的信息,从这些信息牛获知该感应门禁系统主要部件有锁控器 (LockController)、读卡感应器(FingerReader)、电控锁(Lock)和主机管理软件(Win-Pak Software)。将关键信息转化成如图2-29所示的系统体系结构。 ②在面向对象系统建模过程中,通常用概念模型来详细描述系统的问题域。类图用于描述系统的结构化设计,即用来表示概念模型,表达了类、接口及它们之间的静态结构和关系。它最基本的元素是类或接口。通常,在类图上包含泛化(Generalization)、实例(Realization)、关联(Association)、聚集(Aggregation)、组装(Composition)、依赖(Dependency)等关系。 ③对系统的静态设计视图建模时,通常以对系统的词汇建模、对简单协作建模、对逻辑数据库模式建模这3种方式之一使用类图。其中,对系统的词汇建模需划分哪些抽象是考虑中的系统的一部分,哪此抽象是处于系统的边界之外,即用类图详细描述这些抽象和它们的职责。而对简单协作建模中,协作是一些共同工作的类,接口和其他元素的群体,该群体提供的一此合作行为强于所有这些元素的行为之和。在很多领域中要在关系数据库或面向对象数据库中存储永久信息,可以用类图对这些数据库的模式进行建模。 ④在图2-25类图中,已经完成了面向对象分析中的认定类,读者所要完成的工作是定义类的内部信息。类Lock是本系统中的一个关键类,题目与它的属性相关的描述有“门禁系统中的每个电控锁都有一个唯一的编号”、“锁的状态有两种”、“在管理主机上可以设置每把锁的安全级别”、“锁处于‘已锁住’状态时,才能将锁打开”等。从这些信息中提炼出说明类Lock关键属性及特性的答案,即“锁的编号”、“锁的状态”和“锁的安全级别”。