- 1、本文档共612页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构、算法与应用C++描述 第7章 跳表和散列 字典(Dictionaries ) 线性表描述(Linear List Representation) 跳表描述(Skip List Representation) 散列表描述(Hash Table Representation) 本章重点 字典的描述 跳表思想 散列思想和实现 字典 字典是一些元素的集合。每个元素有一个称作key的域,不同元素的key各不相同。 有关字典的操作有: ? 插入具有给定关键字值的元素。 ? 寻找具有给定关键字值的元素。 ? 删除具有给定关键字值的元素。 字典ADT 抽象数据类型Dictionary { 实例 具有不同关键字的元素集合 操作 Create():创建一个空字典 Search(k, x):搜索关键字为k的元素,结果放入x;如果没找到,则返回false,否则返回true Insert(x):向字典中插入元素x Delete(k, x):删除关键字为k的元素,并将其放入x } 字典的线性表描述 字典可以保存在线性序列(e1,e2 , …) 中,其中ei是字典中的元素,其关键字从左到右依次增大。 公式化描述 搜索:可以折半,对有n个元素的字典进行搜索的时间为O(logn)。 插入:首先确认该字典中没有相同关键字的元素,这要通过搜索来实现。然后进行插入,此时要为新元素腾出空间而移动表中O(n)个元素,故插入操作的时间是O(n)。 删除:首先要找到欲删除的元素,然后再进行删除。在进行搜索之后,还要移动O(n)个元素以填补所删除元素的空间,因此删除的时间复杂性为O(n)。 链表描述 templateclass E ,class K//E:链表元素,K:关键字。 class SortedChain{ public: SortedChain() {first =0;} ~SortedChain ( ) ; bool IsEmpty() const {return first ==0;} int Length() const; bool Search(const K k , E e) const; SortedChainE ,K Delete(const K k , E e); SortedChainE ,K Insert(const E e); SortedChainE ,K DistinctInsert(const E e); private: SortedChainNodeE ,K *first; } ; Search templateclass E, class K bool SortedChainE,K::Search(const K k, E e) const {// 搜索与k匹配的元素,结果放入e // 如果没有匹配的元素,则返回false SortedChainNodeE,K *p = first; // 搜索与k相匹配的元素 for (; p p-data k;p = p-link); // 验证是否与k匹配 if (p p-data == k) // 与k相匹配 {e = p-data; return true;} return false; // 不存在相匹配的元素 } Delete templateclass E, class K SortedChainE,K SortedChainE,K ::Delete(const K k, E e) {// 删除与k相匹配的元素 //并将被删除的元素放入e // 如果不存在匹配元素,则引发异常BadInput SortedChainNodeE,K *p = first,*tp = 0; //跟踪p,搜索与k相匹配的元素 for (; p p-data k; tp = p,p = p-link); Delete // 验证是否与k匹配 if (p p-data == k){//找到一个相匹配的元素 e = p-data; // 保存data域 // 从链表中删除p所指向的元素 if (tp) tp-link = p-link; else first = p-link; // p是链首节点 delete p; return *this;} throw BadInput(); // 不存在相匹配的元素 } DistinctInsert templateclass E, class K SortedChainE,K SortedChainE,K::DistinctInsert(const E e) {//如果表中不存在关键值与e相同的元素,则插入e / /否则引发异常BadInput SortedChainNodeE,K *p =
您可能关注的文档
- 蝴蝶谷北山石林规划2010-1-6.doc
- 2013中考语文冲刺模拟试卷2.doc
- 变换与坐标系统(英文)Computer Graphics-Transformation And Coordinate Systems.ppt
- 农业面源污染水处理系统.ppt
- 岳阳建筑业企业专业技术管理人员岗位培训.ppt
- 建筑电气施工技术教材PPT课题8 防雷装置的安装.ppt
- 现代交换原理与通信网技术(上).ppt
- 土壤学 (南京农大).ppt
- 房屋建筑结构课件.ppt
- 广告设计课件:海报设计II.ppt
- 2024自考专业(护理)全真模拟模拟题带答案详解(巩固).docx
- 2024自考专业(建筑工程)高频难、易错点题【全优】附答案详解.docx
- 2024自考专业(建筑工程)高频难、易错点题及参考答案详解AB卷.docx
- 2024自考专业(护理)全真模拟模拟题(含答案详解).docx
- 2024自考专业(护理)复习提分资料含答案详解(最新).docx
- 2024自考专业(护理)全真模拟模拟题及参考答案详解(研优卷).docx
- 2014年秋二年级数学上册期末试卷及答案.docx
- 2024自考专业(护理)全真模拟模拟题及参考答案详解(巩固).docx
- 2024自考专业(护理)全真模拟模拟题A4版附答案详解.docx
- 2024自考专业(建筑工程)题库试题(精华版)附答案详解.docx
最近下载
- DB37∕T 242-2021 建筑消防设施检测技术规程.docx
- PE管材验收标准(SDR17.6).docx VIP
- 复旦大学《计算机体系结构》期末考试两套试卷(含答案).pdf VIP
- 中国近现代史纲要知到课后答案智慧树章节测试答案2025年春海南大学.docx VIP
- 形考作业3:基于UML的大学图书馆图书信息管理系统设计实验.docx VIP
- 大学《地震工程学》课程课件.pptx
- 2024年二建继续教育-基于建筑信息模型、虚拟施工及网络的项目管理理论及实践1、2答案.docx VIP
- 2024年二建继续教育-剖析价值工程及如何运用价值工程优选设计方案1、2答案.docx VIP
- 茶颜悦色案例分析.pptx VIP
- yolov9论文中文翻译.docx VIP
文档评论(0)