哈希表的应用之电话本
来源:互联网 发布:mysql group by 多列 编辑:程序博客网 时间:2024/06/17 14:43
#include <iostream>#include <cstdio>#include <string>#include <fstream>using namespace std;struct Phone{string name;string number;Phone():name(""),number(""){}//初始化为空};class MyPhone{public:MyPhone(ifstream &fin)//以文件输入流作为参数的构造函数{Input(fin);}bool Find(string &a,int ranks){for(int i=0;i<length;i++){if(data[ranks][i].name==a){cout <<"已有此记录"<<endl;return 1;}}return 0;}void Input(ifstream &fin){while(fin){string s;fin>>s;int pos=s.find(',',0);//判断有无逗号,确定其位置if(pos==-1)//实现查找功能{int flag=0;//判断当前位置是否为空的标记int ranks=s[0]-65;for(int i=0;i<length;i++){if(data[ranks][i].name!=""){flag=1;cout<<data[ranks][i].name<<","<<data[ranks][i].number<<endl;}}if(flag==0)cout<<"无记录"<<endl;//当前位置为空}else{int flag=0;int ranks=s[0]-65;string a,b;a.assign(s,0,pos);//复制逗号之前的b.assign(s,pos+1,s.length()-pos-1);//复制逗号之后的flag=Find(a,ranks);if(flag==0)//没有此记录{for(int i=0;i<length;i++)//使用线性探测再散列的方法处理冲突{if(data[ranks][i].name==""){data[ranks][i].name.assign(a);data[ranks][i].number.assign(b);break;}}cout<<"输入成功"<<endl;}}}}private:Phone data[26][5];int length=5;//哈希表的长度};int main(){;ifstream fin("data.txt");MyPhone v(fin);return 0;}/*测试数据Waaa,1111Waaa,1111Wa*/
用哈希表编程实现一个电话本,电话本中记录的数据项为(姓名拼音,电话),例如(LiSi,17012345678)。
要求:
1、用面向对象的方法编程实现电话本类;
2、使用一维数组实现哈希表;
3、取姓名拼音中第一个字母在字母表中的序号作为哈希函数;
4、使用线性探测再散列的方法处理冲突。
注意:
1、拼音字母不区分大小写
2、输入输出格式为:
(输入)WangSan,12345678
(输出)录入成功
(输入)WangSan,12345678
(输出)已有此记录
(输入)Wan
(输出)WangSan,12345678
WanWu,26745678
(输入)Li
(输出)无记录
阅读全文
0 0
- 哈希表的应用之电话本
- 取得用户的电话本
- 电话本的检索功能
- 电话本
- 电话本
- 电话本
- 电话本
- 电话本
- 获取电话本的联系人电话
- MTK 电话本的开机初始化
- 昙花一现的微信电话本
- 4175: 小G的电话本
- RMS入门之旅--详细电话本设计
- 如何修改电话本比较名字的长度?
- 电话本电话号码不能显示的问题
- android电话本中收藏夹的一些操作
- 如何修改电话本比较名字的长度
- Windows Phone 7 电话本相关的操作
- libqrencode学习笔记(一): VS2015编译qrencode-3.4.4
- 10个Java常见运行时异常
- 在java中String类为什么要设计成final?
- 学习Linux命令(45)
- MySQL性能优化(特别是最后保证随机查到数据的思想,而不是前几条)
- 哈希表的应用之电话本
- 【note】Swift初见笔记
- Java多线程中Synchronized和Lock的区别
- 【note】the swift programming language Swift教程笔记
- Ubuntu一键安装BBR脚本
- AndroidStudio安装kotlin插件及其配置过程
- Gradle version 2.10 is required. Current version is
- 【知识库】--spring 记录创建bean(单例)的ObjectFactory(240)
- Leangoo英文版来了~