毕设论文-数据结构课程设计报告.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

数据结构课程设计

学院名称: 计算机工程学院

专 业: 信息管理与信息系统

班 级:

姓 名:

2015 年 1 月 7 日

目录

一、数据结构课程设计报告要求 1

二、第一类题目 2

2.1 问题陈述 2

程序代码 2

运行结果 4

设计体会与总结 4

三、第二类题目 4

问题陈述 4

需求分析 5

概要设计 5

详细设计 6

程序代码 7

运行结果与测试 18

设计体会与总结 19

四、第三类题目 20

问题陈述 20

需求分析 20

概要设计 20

详细设计 21

程序代码 40

运行结果与测试 58

设计体会与总结 65

五、课设总结 65

六、参考文献 66

0

0

《数据结构课程设计》报告要求

一、第一类题目(宋体,四号,加粗)

问题陈述(宋体,小四,单倍行距)

程序代码

运行结果

设计体会与总结

二、第二类题目(宋体,四号,加粗)

问题陈述(宋体,小四,单倍行距)

需求分析

概要设计

详细设计

程序代码

运行结果与测试

设计体会与总结

三、第三类题目(宋体,四号,加粗)

问题陈述(宋体,小四,单倍行距)

需求分析

概要设计

详细设计

程序代码

运行结果与测试

设计体会与总结

四、要求

标题为字体黑体,小三,居中

小标题为宋体,四号,加粗

正文要求为宋体,小四,单倍行距

每个段落缩进2个汉字(4个空格)

每个人报告书不得雷同,尤其第二类与第三类题目,发现雷同者一律

不及格论处。

相关内容可以参考《数据结构课程设计》指导书,但不得抄袭相关内

容。

PAGE

PAGE10

一、第一类题目(宋体,四号,加粗)

问题陈述(宋体,小四,单倍行距)

串的模式匹配:

字符串模式匹配算法是入侵检测系统中的一种重要算法。通过对算法

KMP分析,该算法通过每次匹配失败时特殊位置上字符的启发来获得字符串向后移动的可能距离,这个距离由定义的一个统一函数求出,取其中的最大值作为字符串向后移动的实际距离。实验结果表明,该算法能减少模式匹配中字符的比较次数和尝试次数,提高模式匹配的效率。

程序代码

#includestdio.h#includestring.htypedefcharDataType;

voidGetNext(DataType*t,int*next,inttlength)//求模式串t

的next函数值并存入数组next

{

inti=1,j=0;//定义整型变量i,j

next[1]=0; //初始化

存放部分匹配数组的next的第一项为-1

while(itlength) //当i小于

字符串的长度时,执行循环

{

if(j==0||t[i]==t[j]) //如果j刚开

始循环或者i和j表示的字符相同时

{

++i;++j; //i和j都自增,即增加到next中i位

置的后一位,而j的增加也表示与i表示的字符相符的个数加1if(t[i]!=t[j]) //如果此时模式串中的i和j位置的字符不

next[i]=j; //将j的值赋给next数组,便于直接比较目

标串s与t在next[j]处的值

else //如果模式串中的i和j位置的字符仍然相

next[i]=next[j];//将j的next中的值赋给i所在位置的值,

这样能够保证后面比较目标串和字串时,直接比较t在next[j]处的值,而不需要比较t在j处的值

}

else //如果i和j

对应的字符不相同

j=next[j]; //继续后续比

}

}

intIndexKmp(DataType*s,DataType*t,intpos,int

tlength,intslength,int*next)//利用模式串t的next函数求t在主串

s中第pos个字符之后的位置

{

量i,j

inti=pos,j=1; //定义整型变

while(i=slengthj=tlength) //当i和j都

未到达字符串末端时

{

if(j==0||s[i]==t[j]) //如果j刚开

始比较或者模式串和目标串对应的字符相等时

{

++i;++j; //i和j均往

后移动,比较后续字符

}

else

j=next[j]; //否则,保持

i不变,将j右滑动到下一个部分匹配位置

}

if(jtlength) //如果j的

大小都大于t(模式串)的长度,说明能够找到匹配的位置

returni-tlength; //返回此时

i的值减去t(模式串)的长度得到t在对应的s前方还有几个字符,即为它们的匹配位置

else

ret

文档评论(0)

159****1944 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档