7、二叉排序树菜单
// 二叉排序树菜单void BiTreeMenu(){while(true){system("cls"); //清屏cout << "*******************基于不同策略的英文单词的词频统计和检索系统*******************" << endl;cout << "---二叉排序树查找---" << endl;cout << "1.二叉排序树的顺序查找" << endl;cout << "2.返回上一级" << endl;cout << "请按相应的数字键进行选择:" << endl;int n;cin >> n;switch (n){case 1: BitreeLocateMenu();//二叉排序树查找菜单break; //退出switchcase 2: return; //退出函数default:cout << "输入的不是有效符号,请重新输入" << endl; system("pause"); //暂停} //switch} //while}//二叉排序树的顺序查找菜单void BitreeLocateMenu(){BiSortTree B(WF,sum);while(true){system("cls"); //清屏cout << "*******************基于不同策略的英文单词的词频统计和检索系统*******************" << endl;cout << "---基于二叉排序树的顺序查找---" << endl;cout << "1.词频统计" << endl;cout << "2.单词查找" << endl;cout << "3.返回上一级" << endl;cout << "请按相应的数字键进行选择:" << endl;int n;cin >> n;switch (n){case 1: B.printf(); break;case 2: BitreeWordLocMenu(); //二叉排序树查找单词菜单break;case 3:return; //退出函数default: cout << "输入的不是有效符号,请重新输入" << endl; system("pause"); //暂停} //switch} //while}//二叉排序树查找单词菜单void BitreeWordLocMenu(){BiSortTree B(WF,sum);system("cls"); //清屏cout << "*******************基于不同策略的英文单词的词频统计和检索系统*******************" << endl;cout << "---二叉排序单词查找---" << endl;cout << "请输入要查找的单词:";string word;cin >> word;auto start = system_clock::now(); //开始时间B.SearchBST(word);duration
8、开放地址哈希表类
//开放地址哈希表类class HashTable {public:HashTable(); //构造函数,初始化空散列表~HashTable() {}; //析构函数int Insert(datatype a); //插入int Search(string word); //查找datatype Get(int a);void Print(); //输出private:int H(int k); //哈希函数(散列函数)datatype ht[MaxSize]; //散列表};//构造函数HashTable::HashTable() {for (int i = 0; i < MaxSize; i++) {ht[i].key = 0; //关键码初始化ht[i].word = "";ht[i].frequency = 0; // 0表示该散列单元为空} //for}//哈希函数,除留余数法int HashTable::H(int k) {return k % MaxSize;}//输出函数void HashTable::Print() {system("cls"); //清屏ofstream fout; //文件写操作 内存写入存储设备fout.open("outfile5.txt"); //打开文件fout << "单词总数为:" << sum << endl;fout << "词频" << "\t" << "单词" << endl;for (int i = 0; i < sum; i++) {fout << WF[i].frequency << "\t" << WF[i].word << endl;cout << WF[i].frequency << "\t" << WF[i].word << endl;} //forsystem("pause"); //暂停}//查找函数int HashTable::Search(string word) {int key = WordTransitionKey(word); //将单词转化为关键码int i = H(key); //计算散列地址,设置比较的起始位置while (ht[i].key != 0) {if (ht[i].word == word)return i;//查找成功elsei = (i + 1) % MaxSize; //向后探测一个位置} //whilereturn 0; //查找失败}//插入函数int HashTable::Insert(datatype f_word_key) {int key = WordTransitionKey(f_word_key.word);//将单词转化为关键码int i = H(key);//计算散列地址,设置比较的起始位置while (ht[i].key != 0) { //寻找空的散列单元i = (i + 1) % MaxSize; //向后探测一个位置} //whileht[i].key = key; //关键码赋值ht[i].word = f_word_key.word; //单词赋值ht[i].frequency = f_word_key.frequency; //词频赋值return i; //返回插入位置 }//获取单词以及频率datatypeHashTable::Get(int a) {return ht[a];}
- vue双向绑定的原理及实现双向绑定MVVM源码分析
- vue中如何简单使用vue.draggable组件实现拖拽功能
- 三 用Abp实现短信验证码免密登录:Vue网页端开发
- 使用Yeoman实现vue项目结构创建
- android framework 系统native c/c++源码查看跳转工具
- angular ui-router:简单的单页面嵌套路由的实现过程
- 提升生鲜B2B电商系统的效率与品质,实现采购与销售的双赢
- 来自本科生的暴击:清华开源「天授」强化学习平台,纯PyTorch实现
- 支持单选、多选 Android本地历史记录、及产品标签实现(附源码)(使用
- micropython 驱动是如何实现的_ESP8266使用Micropytho