基于Hash表的代码相似度度量

上传者: gwlbjfu | 上传时间: 2021-12-06 23:44:41 | 文件大小: 19KB | 文件类型: -
本人的数据结构实习作业“基于Hash表的代码相似度度量”,代码简洁明了,可读性强,并附带较多的注释,方便他人查看。一般通过查看注释便能了解程序的结构与功能,方便进行修改。以下是实习作业的具体要求: 对于两个C++程序,设计并实现两种不同的基于Hash表的检测算法(开地址法和链地址法),计算两个程序的相似度,并分析比较两种算法的效率。 分别读取两个C++程序文件(p1.cpp, p2.cpp),自行设计哈希函数,分别利用开放地址法和链地址法的冲突解决方案,构建C++语言关键字的Hash表。在扫描源程序的过程中,每遇到关键字就查找相应Hash表,并累加相应关键字出现的频度。 根据统计的两个程序中关键字不同频度,可以得到两个向量X1,X2。通过计算向量X1和X2的相对距离来判断两个源程序的相似性,相对距离s的计算方法是( T表示向量的转置) |X1—X2| ((X1—X2)(X1—X2)T)1/2 s= ———————— = ——————————————— |X1|1/2•|X2|1/2 (X1•X1T)1/2(X2•X2T)1/2 利用开放地址法和链地址法两种不同的冲突解决方案构建,分别输出s和两种方法计算s所用的时间。 读取C++程序时,过滤注释,不考虑注释中的内容。(两种注释//和/*…*/) 采用二叉排序树来统计其中的关键字及其频度,按照上述公式计算s,同时给出计算s所用的时间。

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明