败 2 种情况 typedef struct Lnode char str20 //关键字名称 int frequency //出现的次数 struct Lnode next //冲突产生后的下个关键字 拉练法 LnodeLinkList 3.2 程序模块 void CreateHashLnode Hash // 通过文件”key.txt”建立 hash 表 拉练法 int HashFunchar s //构建的哈希函数 void InsertKeychar TestStr //对可能为关键字的字符串 进行 hash 查找 并统计查找次数 void Countkey //对待查的 c 源文件遍历 在适当条件下找出可能为关键字的字符串并调用 InsertKey 函数进行 hash 查找 int IsSmallLetterchar ch //判断某一个字符是否是小写字母 void PrintHashList //打印给用户看 hash 表中关键字的次数 3.3 各模块之间的调用关系 main CreateHash Countkey PrintHashList HashFun IsSmallLetter InsertKey函数说明: main:主函数 CreateHash 建立 Hash 表 HashFun Hash 函数 CountKey 读取 C 源文件并获取单词进行 hash 查找 IsSmalLetter 判别是否是小写字母 InsertKey 进行 hash 查找并计数 PrintHashList 打印关键字个数 -6- 数据结构课程设计之 C 源文件关键字统计 李华溢 06050514四、测试与分析将自己做的课程设计的
代码作为源文件进行测试。
一共测试 8 次实验表明程序是正确的。
其中一次结果如下: 另分别对 “ “ // / /进行测试都满足条件 -7- 数据结构课程设计之 C 源文件关键字统计 李华溢 06050514五、总结 1。
C 程序设计是面向过程的。
函数是构成程序的基本单元,函数选择与设计很重要,有利于程序 的编写 2。
程序数据结构算法 其中数据结构的地位也是很重要的。
如果数据结构建立不够好,会影响算法。
当然算法的正确性,健壮性,可读性,高效低存储也是很重要的。
3。
对 Hash 查找的认识 有三个问题值得关注 1.如何定义一个好的 hash 函数 使元素在 Hash 表内分散均匀,使冲突降到最低。
2.如何建立 Hash 表以及避免 Hash 冲突 对拉链法和线性探测法的理解 3.Hash 查找的性能分析 平均查找次数在1-2之间 可见 Hash 查找效率很高 4。
对程序设计水平又有了新的提高。
程序越写越大函数越写越多。
5。
合理的注释可以方便日后参考和改进 6。
写科技论文的格式规范 1。
注意排版,树形结构的段落分层 2。
概念的介绍要详尽 3。
尽量写出逻辑框图 7。
程序调错的提高 从
Vc 6.0 在一些功能上不及 Vs2005 方面 并且
代码不可以折叠,
Vc 6.0 的 debug 过渡到 VS2005 debug 的使用 也算是个不小的进步。
-8-