虚心向各位学过数据结构和C语言的同志请教
虚心向各位学过数据结构和C语言的同志请教一个编程题:数据结构课程设计之四:利用Hash技术统计C源程序中关键字的频度成果形式
1、软件
2、设计报告:
①算法思想:(数据结构设计、功能设计)详见下文
②程序结构:
自定义类型、全局变量、符号、函数的说明、函数关系图
③收获与体会。
一、任务描述
扫描一个C源程序,用Hash表存储该程序中出现的关键字,并统计该程序中的关键字出现的度。用线性探测法解决Hash冲突。设Hash函数为:
Hash(Key)=[(Key的首字母序号)*100+(Key的尾字母序号)] Mod 41
关键字:asm default fl
oat long sizeof void
break do for near static volatile
case double goto pascal struct while
cdecl else huge register switch
char enum if return typedef
const extern int short union
continue far interrupt signed unsigned
以下是设计过程中,部分值得思考的问题。
二、数据结构设计
①关键字表的存储结构
②Hash表中的结点结构
频度、冲突次数
三、功能设计
①从一个大字符串中分解单词
单词:由非字母分隔开的连续字母串
②识别是否是关键词
哪种方法:有序表查找、二叉查找树?
③Hash函数,解决冲突,统计冲突次数
key => 地址
④插入Hash表,或调整Hash表项中的频度
⑤输出Hash表,关键词总数,冲突次数
自己想象吧,功能要多,设计要合理。
四、技术讨论
①文件不同,Hash表各项次序是否一样?
②考察多个C源程序文件,计算当关键词总数约为1000时,冲突次数的总次数?
③Hash表空间增大后,是否冲突一定减少?
④比较其他的Hash函数,其他的冲突处理方法,效率有何差别。
⑤题目所给的Hash函数,好吗?
我希望能在TC下编译,实在不行就用c++,只能用这两种了
能有一份详细的设计报告,越快越好,谢了!