哈希表课程设计报告.doc

哈希表课程设计报告.doc

ID:58865190

大小:43.50 KB

页数:15页

时间:2020-09-22

哈希表课程设计报告.doc_第1页
哈希表课程设计报告.doc_第2页
哈希表课程设计报告.doc_第3页
哈希表课程设计报告.doc_第4页
哈希表课程设计报告.doc_第5页
资源描述:

《哈希表课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、哈希表设计1需求分析1.1针对某个集体中的人名设计一个哈希表,使得平均查找长度不超过R,完成相应的建立和查表程序.1.2人名为汉语拼音形式,最长不超过18个字符(如:庄双双zhuangshuangshuang).1.3假设待填入哈希表的人名有30个,平均查找长度为2。哈希表用除留余数法构造,用伪随机探测在散列法处理冲突。1.4在输入人名过程中能自动识别非法输入,并给与非法输入的反馈信息要求重新输入。1.5测试数据:1)输入数据:zhangyun,mochengcheng,geyuwei,zhouruife

2、ng,yuanyan,mengxiangyin,wuxudong,chenghusheng,wangqi,zhangxiuhua,xiongliying,leiyang,hanbingfeng,zhangchao,yaoboyu,liyingtao,liutong,wangyingli,lixiang,lvxiaohu,huanglei,zhouxiong,zhangxinxin,hexuyang,linyoulu,zhangxiao,chenzhi,dongchaoxun,wangxinyu,yuman

3、,zhangyao.(在输入是可以输入非法数据来检验如:12345,zhuangshuangshuang,$%&^&*等等)2)查找输入:zhuangyuan输出:查找成功输入:zhuangshuangshuang输出:查找失败输入:mochengcheng输出:查找成功输入:zhanglei输出:查找失败(在输入时也输入非法数据来检验)2概要设计2.1哈希表的定义如下:classHashList_T{数据对象:D={A(i,j)={不多于18个字符的字符串}0=

4、idcreateHashList(void);操作结果:创建一个哈希表boolisLegal(string&s);前置条件:s是非空字符串后置条件:s合法字符串返回true,否则返回falsevoidshow(boollhs)const;前置条件:lhs被初始化后置条件:lhs为真打印查找成功,否则打印查找失败voidfindName(string&s);前置条件:哈希表已经建立,s非空后置条件:查找所输入的人名在不在哈希表中intgetNumber(string&s)前置条件:s被初始化后置条件:返回s

5、索引的值boolisFull(inti)const前置条件:变量i被初始化并且i不超过哈希表的长度后置条件:第i行的链表满了返回true,否则返回falseboolisExistence(inti,string&s)前置条件:参数被初始化后置条件:s存在返回true,否则返回false};2.2主程序voidmain(){初始化;do{接受命令;处理命令;}while("命令"!="退出");}2.3本程序的模块只有两个模块:主程序模块和哈希表模块,调用关系为:主程序模块调用哈希表模块.3详细设计3.1哈

6、希表的私有成员为vector的向量组,每一组的数据个数不超过2个3.2哈希表的基本操作设置:HashList_T(intnumbers=1);HashList_T(constHashList_T&rhs);//初始化哈希表~HashList_T(void);//释放资源HashList_T&operator=(constHashList_T&rhs);//赋值函数voidcreateHashList(void);//创建哈希表boolisLegal(string&s);//判断人名是否合法

7、voidshow(boollhs)const;//显示查找结果voidfindName(void);voidfindName(string&s);//查找特定姓名intgetNumber(string&s);//得到索引号boolisExistence(inti,string&s);//第i行是否存在字符串sboolisFull(inti)const;//第i行向量是否满了其中部分操作的算法:HashList_T::HashList_T(intnumbers){m_numbers=numbers;m_na

8、me_ptr=newvector[m_numbers];}HashList_T::~HashList_T(void){delete[]m_name_ptr;}intHashList_T::getNumber(string&s){inti=s.size()%m_numbers;boolresult=isFull(i);if(!result)returni;else{intj;if(m_numbers%2==0)j

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。