数据结构课程设计报告-统计c源程序中的关键字出现的频率 一、题目 统计c源程序中的关键字出现的频率 二、算法思想描述 本程序是扫描一个c源程序,有Hash表存储程序中出现的关键字,并统计该程序中的关键字出现的频度。用线性探测法解决Hash冲突。设Hash函数为:Hash(key)=[(key的第一个字母序号)*100+(key的最后一个字母序号)] MOD 41。 算法思想如下: 建立一个结构体数组的hash表,存放读入的关键字和其出现的次数。先初始化并建立该hash表,先初始化为”0”,0,再从文件中一个个读入所有关键字,存放在hash表中相应位置。 从另一文件中一行行读入,找出其中非注释中的,也非“”中的,长度2-8个字符的小写字符串,用hash查找,看该单词是否关键字,如是其出现次数加一,若不是就继续下一个这样的字符串,直至文件尾。在找这样的字符串途中,遇到无法匹配的单或双引号打印出出现在第几行。 Hash表建立好后打印出来。 其中核心算法分为两块:1.hash表的建立和hash查找。2.寻找上述的字符串。 1.建立Hash表的算法: 该函数实参为已建立的hash表和在c源程序中找到的一个小写字母字符串。 从该字符串key为下标处依次开始查找,到数组末尾是返回数组头(key=(key+1)%44;),分两种情况: ①若先找到空位,说明该字符串不是关键字。则不改变hash表。 ②若先找到了该关键字的纪录,则该字符串是关键字,++hash[key].num; ...... |
查看评论
已有0位网友发表了看法