- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)