数据结构报告—实现对字典的查找(共16页).doc
《数据结构报告—实现对字典的查找(共16页).doc》由会员分享,可在线阅读,更多相关《数据结构报告—实现对字典的查找(共16页).doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上数据结构课程设计报告主题:实现字典的查找学号:班级:姓名:指导老师:内容概要(1) 题目要求;(2) 实现字典的查找的要点;(3) 函数模块及各函数可实现的功能简介;(4) 具体的源代码;(5) 使用说明;(6) 实验心得;一:题目要求如下:采用分块查找,哈希表查找,二叉排序树查找等不同方法实现对字典的查找,并分析不同查找方法的效率。二:构思要点:1.定义一个Dictionary 结构:里面包含单词和单词意义属性:struct Dictionarystring word;string para;2.定义一个管理器类Manage,里面包含Dictionary类型的向量容
2、器,和读取dictionary.txt的Readtxt(),以及二叉搜索树查找BiSearchTreesearch(),分块查找Blocksearch()和哈希表查找HashTablesearch()等功能函数:class Manageprivate:vector Dic;public:void Readtxt();void BiSearchTreesearch();void Blocksearch();void HashTablesearch();3.各个功能函数的详细代码:void Manage:Readtxt():读取dictionary.txt里的单词表void Manage:Read
3、txt()int i = 0;string a, b;Dictionary d;ifstream ifile;ifile.open(dictionary.txt); /打开文件if (!ifile)cout 无法打开 dictionary.txt! a b;d.word = a;d.para = b;Dic.push_back(d);i+;ifile.close();void Manage:HashTablesearch():哈希表查找函数void Manage:HashTablesearch()string word;cout 请输入你要查找的单词: word;HashTable myHas
4、hTable(1.7*(int)Dic.size();string b2025;for (int i = 0; i (int)Dic.size(); i+)bi = Dici.word;DataType a2025;for (int i = 0; i (int)Dic.size(); i+)ai = bi;for (int i = 0; i (int)Dic.size(); i+)myHashTable.Insert(ai);string k = myHashTable.IsIn(word);if (k = 字典中没有这个单词!)cout k endl;elsefor (int i = 0;
5、i (int)Dic.size(); i+)if (Dici.word = k)cout 查找成功,其位置为: i endl; /*如果找到该数,则输出其位置*/cout Dici.word t Dici.para endl;void Manage:Blocksearch():实现分块查找函数void Manage:Blocksearch()int j = 0, k;string key;string a2025;for (int i = 0; i (int)Dic.size(); i+)ai = Dici.word;for (int i = 0; i = 24; i+)index_table
6、i.start = j; /*确定每个块范围的起始值*/index_tablei.end = j + 81 - 1; /*确定每个块范围的结束值*/j = j + 81;index_tablei.key = aindex_tablei.end; /*确定每个块范围中元素的最大值*/cout 请输入你要查找的单词: key;k = block_search(key, a); /*调用函数进行查找*/if (k = 0)cout 查找成功,其位置为: k endl; /*如果找到该词,则输出其位置*/cout Dick.word t Dick.para endl;elsecout 查找失败! en
7、dl; /*若未找到则输出提示信息*/void Manage:BiSearchTreesearch():实现二叉搜索树查找函数void Manage:BiSearchTreesearch()BiSearchTree searchTree;string a2025;for (int i = 0; i (int)Dic.size(); i+)ai = Dici.word;for (int i = 0; i (int)Dic.size(); i+)searchTree.Insert(ai);cout 请输入你要查找的单词: key;BiTreeNode *node = searchTree.Find
8、(key);if (node = NULL)cout 查找失败! endl; /*若未找到则输出提示信息*/elsefor (int i = 0; i Data()cout 查找成功,其位置为: i endl; /*如果找到该数,则输出其位置*/cout Dici.word t Dici.para endl;三,程序运行截图:程序运行平台:Visual studio professional 2013四,程序源代码:程序分为:Dictionary.hBiSearchTree.hHashTable.hManage.hHashTable.cppManage.cppMain.cppDictionar
9、y.h:#ifndef DICTIONARY_H /避免重定义错误, 该文件编译一次#define DICTIONARY_H#include#includeusing namespace std;struct Dictionarystring word;string para;#endifBiSearchTree.h:#ifndef BITREENODE_H /避免重定义错误, 该文件编译一次#define BITREENODE_H#include#includedictionary.husing namespace std;template class BiTreeNodeprivate:B
10、iTreeNode *leftChild;/左子树指针BiTreeNode *rightChild;/右子树指针T data;/数据域public:/构造函数和析构函数BiTreeNode() :leftChild(NULL), rightChild(NULL)BiTreeNode(T item, BiTreeNode *left = NULL, BiTreeNode *right = NULL) :data(item), leftChild(left), rightChild(right)BiTreeNode()BiTreeNode* &Left(void)/注意返回值类型为指针的引用类型r
11、eturn leftChild;BiTreeNode* &Right(void)/注意返回值类型为指针的引用类型return rightChild;T & Data(void)/注意返回值类型为指针的引用类型return data;template class BiSearchTreefriend istream & operator (istream & in, BiSearchTree * &tree);private:BiTreeNode *root;/根结点指针void Insert(BiTreeNode* &ptr, const T & item);public:BiSearchTr
12、ee(void) :root(NULL);/构造函数BiSearchTree(void);/析构函数BiTreeNode *Find(const T &item);void Insert(const T &item)Insert(GetRoot(), item);BiTreeNode *&GetRoot() return root; ;template BiTreeNode *BiSearchTree:Find(const T &item)if (root != NULL)BiTreeNode * temp = root;while (temp != NULL)if (temp-Data()
13、= item)return temp;if (temp-Data() Right();elsetemp = temp-Left();return NULL;template void BiSearchTree:Insert(BiTreeNode* &ptr, const T & item)if (ptr = NULL)ptr = new BiTreeNode(item);else if (item Data()Insert(ptr-Left(), item);else if (item ptr-Data()Insert(ptr-Right(), item);#endifHashTable.h:
14、#ifndef HASHTABLE_H /避免重定义错误, 该文件编译一次#define HASHTABLE_Husing namespace std;#includedictionary.htypedef string KeyType;enum KindOfItem Empty, Active, Deleted ;struct DataTypeKeyType key;DataType()DataType(KeyType k) :key(k)int operator=(const DataType & a)return key = a.key;int operator!=(const Data
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 报告 实现 字典 查找 16
限制150内