数据结构课程设计

发布 2022-10-01 20:58:28 阅读 5366

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 初始化时每个方格都是关闭的,一个...