(完整word版)哈希表实现电话号码查询-报告.doc

(完整word版)哈希表实现电话号码查询-报告.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

《数据结构》

课程设计报告书

题目: 哈希表存储的电话号码查询

专业:

学号:

学生姓名:

指导教师:

完成日期:

目录

实训题目………………

1.1实训要求………….

1.2需求分析………….

系统设计………………

2.1总体设计…………..

2.2详细设计…………..

2.2.1程序头文件…………………..

2.2.2学生信息类及哈希表类……..

2.2.3主函数流程…………………..

3.系统实现……………….

3.1编码………………..

3.2测试………………..

4.归纳总结……………….

4.1实训中遇到的问题以及解决办法………………..

4.2感想和心得体会…………………..

5.参考资料………………

实训题目

1.1实训要求

设每个记录有以下数据项:用户名、电话、地址;

从键盘输入各记录,以电话号码为关键字建立哈希表;

采用链地址法方法解决冲突;

能够查找并显示给定电话号码的相关记录。

1.2需求分析

本次实验要求采用哈希表完成信息的查找和储存,哈希表即为散列表。本程序采用学生信息管理为例,设每个学生有电话号码,学生姓名,家庭住址三个信息。通过建立哈希表储存信息,信息储存在节点中,并通过以电话号码为关键字完成查找,并显示出该学生的姓名,电话号码以及家庭住址。当哈希表中的数据与输入的数据发生冲突时,使用节点向后移一位的方法来解决冲突。

系统设计

总体设计

本系统通过设计学生信息类和哈希表类来完成整个系统。通过学生信息类实现从键盘输入学生的姓名,电话号码以及家庭地址。将学生的信息储存在建立的哈希节点内,通过多个链表保存,相同信息的保存在同一个节点内。然后通过以电话号码为关键字建立哈希表。当输入的信息与表内储存的信息发生冲突时,通过建立新的节点并向后移一位的方法来解决冲突。

系统界面

详细设计

首先初始化哈希表,并建立新的节点(哈希表的容量不能大于1001,否则哈希表初始化失败),从键盘输入学生的姓名,电话号码以及家庭住址,所输入的变量无法被改变。然后将建立的节点插入哈希表里。

2.2.1程序头文件

#includeiostream.h

#includestdlib.h

#includecstdio

#includesstream

#defineMAX_LEN60

2.2.2学生信息类及哈希表类

学生信息类(其中输入的信息无法改变)

classStudent

{

private:

char_name[MAX_LEN]; //姓名

char_phone[MAX_LEN]; //电话

char_addr[MAX_LEN]; //地址

public:

Student();

constchar*getName();//变量不允许被改变

constchar*getPhone();

constchar*getAddr();

voidsetName(constchar*name);

voidsetPhone(constchar*phone);

voidsetAddr(constchar*addr);

};

哈希表类

其中含有初始化哈希表函数,清空函数,插入节点函数,获取节点位置函数组成。

classCHashTableManage

{

private:

HASHTABLE*_hashTable;//哈希首地址

public:

CHashTableManage();

boolhashtable_init(inttable_size);//初始化

voidhashtable_clear(); //清理

//拿到这个字符串存在的节点

LISTNODE*hashtable_find(char*phone);

//插入一个结点

inthashtable_insert(LISTNODE*pNode);

protected:

LISTNODE*CHashTableManage::hashtable_newnode(LISTNODE*str);

//哈希函数

//得到字符串在哈希表中的位置

inthashtable_hash(char*str,inttab

文档评论(0)

180****9759 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档