1.基于散列表的程序相近度检测系统。
—哈希表。2.公司招聘模拟系统。
—队列。班级: 软件102班。
姓名。指导教师。
成绩。2024年6月18日。
目录。必做题 3
需求分析 3
设计要求: 3
概要设计: 3
1.流程图: 4
2.哈希表及其中一些函数 5
3.程序中主要功能函数 5
a.主函数 5
b.文件处理函数 5
c. 输出文件函数 7
调试分析 8
1.调试过程中遇到的问题 8
2.算法的时空分析 8
3.经验和体会 8
测试结果 8
参考文献: 10
源**附录: 10
自选题 19
需求分析 19
概要设计 19
详细设计 20
1.流程图: 20
2.函数: 21
函数 21print (stu *p) 21
3.插入函数 21
调试分析: 21
1.调试过程中遇到的问题 21
2. 算法的时空分析 22
3.经验和体会 22
测试结果 22
参考文献: 23
源**附录: 23
正文。对于两个c程序,设计并实现两种不同的基于散列表的检测算法,计算两个程序的相近度,并分析比较两种算法的效率。
1. 分别读取两个c程序文件( 识别其中的关键字并统计频度,分别生成两个文件,保存关键字名称和对应频度(
2. 自行设计散列函数,分别利用开放地址法和链地址法构建c语言关键字的散列表。在扫描源程序的过程中,每遇到关键字就查找相应散列表,并累加相应关键字出现的频度。
3. 根据统计的两个程序中关键字不同频度,可以得到两个向量。
如下面简单的两个c程序关键字统计结果的例子(假定只考虑以下9个关键字)
x1=[3,4,0,4, 0,6,2,0,3]
x2=[3,2,0,5,0,4,1,0,2]
x1-x2=[0,2,0,-1,0,2,1,0,1]
通过计算向量x1和x2的相对距离来判断两个源程序的相似性,相对距离s的计算方法是(t表示向量的转置)
显然当x1=x2时,s=0,反映出可能是同一程序;s值越大,则两个程序的差别可能也越大。
4.利用开放地址法和链地址法两种方法实现,分别输出s和两种方法计算s所用的时间,分析比较两种方法的效率。
该程序用到的数据结构主要是哈希表,其次是顺序表(数组)
哈希表中存放着 18个关键字。
数组有两种:一种是在读取文件时暂时用来存放关键字数组元素为字符型。
:一种是在统计关键字个数的并将之存入数组,数组元素为整型。
详细设计:功能:调用其他函数,几个case语句实现程序的分支;
主函数开始时候定义了两个变量:clock_t start, finish
在程序开始执行部分插入start = clock();
结束处插入finish = clock();
最后由 duration = double)(finish - start) /clocks_per_sec; 可得程序执行的时间。
功能:主要过滤掉c++源文件中的注释,换行,空格等字符
int read(char *filename)
char word[maxlen],ch,ch1;
int i;
file *read
if((read=fopen(filename,"r"))null)
while(!feof(read
fclose(read);
功能:将得到的源文件中关键字及其频度导出到文件中。
void out_file(char *filename)
fclose(fp);
d.计算相似度把两个源文件的关键字数分别存入两个数组a[18] ,b[18] 中然后对数组进行其模操作等:
相似度:s=arrymod(c)/arrymod(b)*arrymod(a);
int arrysub(int arry1[18],int arry2[18],int arry[18两个数组相减。
int i=0;
for(;i<18;i++)
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...