ImageVerifierCode 换一换
格式:DOCX , 页数:70 ,大小:749.31KB ,
资源ID:13076031      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13076031.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(毕设论文-数据结构课程设计报告Word文件下载.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、3.7. 设计体会与总结19四、第三类题目204.1. 问题陈述204.2. 需求分析204.3. 概要设计204.4. 详细设计214.5. 程序代码404.6. 运行结果与测试584.7. 设计体会与总结65五、课设总结65六、参考文献66数据结构课程设计报告要求一、第一类题目(宋体,四号,加粗)1. 问题陈述(宋体,小四,单倍行距)2. 程序代码3. 运行结果4. 设计体会与总结二、第二类题目(宋体,四号,加粗)2. 需求分析3. 概要设计4. 详细设计5. 程序代码6. 运行结果与测试7. 设计体会与总结三、第三类题目(宋体,四号,加粗)四、要求1. 标题为字体黑体,小三,居中2. 小

2、标题为宋体,四号,加粗3. 正文要求为宋体,小四,单倍行距4. 每个段落缩进 2 个汉字(4 个空格)5. 每个人报告书不得雷同,尤其第二类与第三类题目,发现雷同者一律按不及格论处。6. 相关内容可以参考数据结构课程设计指导书,但不得抄袭相关内容。20串的模式匹配:字符串模式匹配算法是入侵检测系统中的一种重要算法。通过对算法KMP 分析,该算法通过每次匹配失败时特殊位置上字符的启发来获得字符串向后移动的可能距离,这个距离由定义的一个统一函数求出,取其中的最大值作为字符串向后移动的实际距离。实验结果表明,该算法能减少模式匹配中字符的比较次数和尝试次数,提高模式匹配的效率。#includestdi

3、o.h #includestring.h typedef char DataType;void GetNext(DataType *t,int *next,int tlength)/求模式串 t的 next 函数值并存入数组 nextint i=1,j=0; /定义整型变量 i,jnext1=0;/初始化存放部分匹配数组的 next 的第一项为-1while(itlength)/当 i 小于字符串的长度时,执行循环if(j=0|ti=tj)/如果 j 刚开始循环或者 i 和 j 表示的字符相同时+i;+j;/i 和 j 都自增,即增加到 next 中 i 位置的后一位,而 j 的增加也表示与

4、i 表示的字符相符的个数加 1 if(ti!=tj)/如果此时模式串中的 i 和 j 位置的字符不等nexti=j;/将 j 的值赋给 next 数组,便于直接比较目标串 s 与 t 在 nextj处的值else/如果模式串中的 i 和 j 位置的字符仍然相nexti=nextj; /将 j 的 next 中的值赋给 i 所在位置的值,这样能够保证后面比较目标串和字串时,直接比较 t 在 nextj处的值, 而不需要比较 t 在 j 处的值else/如果 i 和 j对应的字符不相同j=nextj;/继续后续比较int IndexKmp(DataType *s,DataType *t,int p

5、os,inttlength,int slength,int *next)/利用模式串 t 的 next 函数求 t 在主串s 中第 pos 个字符之后的位置量 i,jint i=pos,j=1;/定义整型变=slength&jtlength)/如果 j 的大小都大于 t(模式串)的长度,说明能够找到匹配的位置return i-tlength;/返回此时i 的值减去 t(模式串)的长度得到 t 在对应的 s 前方还有几个字符,即为它们的匹配位置return 0;/否则,即为找不到匹配,返回 0int main(int argc,char *argv)int locate,tlength,slen

6、gth;/定义整型变量表示它们的匹配和两个字符串的长度int next256;/定义存放它们部分匹配数值的数组DataType s256,t256;/定义字符数组 s,tprintf(请输入第一个串(母串):);slength=strlen(gets(s+1);/目标串长度请输入第二个串(母串):tlength=strlen(gets(t+1);/模式串长GetNext(t,next,tlength);/求部分匹配数组 nextlocate=IndexKmp(s,t,0,tlength,slength,next);/求出它们的具体匹配位置匹配位置:%dn,locate); return 0;(

7、1)能够找到匹配(2)不能找到匹配位置时间复杂度 O(m+n)串匹配算法虽然发展了几十年,然而非常实用的算法是近年才出现。串匹配问题的研究存在理论研究和实际应用的脱节。那些专门从事算法研究的学者关心的只是理论上看起来很美妙的算法具有很好的时间复杂度。而本程序运用的是 KMP 算法,即保证其中一个字符串时另一个字符串的子串,利用 next 数组保存部分匹配的信息。实际上,模式串中的部分匹配信息就是真子串。通过观察串的模式匹配的算法,大致了解他的一般步骤,令 s 为目标串,t 为模式串,设 i 指针和 j 指针,若 s 的 i 指针和 t 的 j 指针指向的字符相同,则指针加 1,接着比较后面的字

8、符是否相同,若不相同,则保持 i 不变,将 j 指针右移,比较是否相同,知道比较完整个字符串为止。而且知道 KMP 算法的时间复杂度为 O(n+m),所以这种算法不仅时间复杂度低,而且便于理解。另外,我们在掌握串的匹配模式时,还应该关注串的一些基本运算, 理解串的基本概念和特征的基础,了解串的内部表示和处理方法。字符串时一种特殊的线性表。特殊之处在于表中的每一个元素都是,在串的基本操作中,有联接,求串长、求子串、比较串的大小、串的插入、删除、子串的定位和置换。给定一个计算机网络以及机器间的双向连线列表,每一条连线允许两端的计算机进行直接的文件传输,其他计算机间若存在一条连通路径,也可以进行间接

9、的文件传输。请写出程序判断:任意指定两台计算机,它们之间是否可以进行文件传输?输入要求:输入若干测试数据组成。对于每一组测试,第 1 行包含一个整数 N(10000),即网络中计算机的总台数,因而每台计算机可用 1 到 N 之间的一个正整数表示。接下来的几行输入格式为 I C1 C2 或者 C 或者 CC1C2 或者 S,其中 C1 和 C2 是两台计算机的序号,I 表示在 C1 和 C2 间输入一条连线,C 表示检查 C1 和 C2 间是否可以传输文件,S 表示该组测试结束。当 N 为 0 时,表示全部测试结束,不要对该数据做任何处理。输出要求:对每一组 C 开头的测试,检查 C1 和 C2

10、 间是否可以传输文件, 若可以,则在一行中输出“yes”,否则输出“no”。当读到 S 时,检查整个网络。若网络中任意两机器间都可以传输文件,则在一行中输出“The network is connected.”,否则输出“There are kcomponents.”,其中 k 是网络中连通集的个数。两组测试数据之间请输出一空行分隔。设计框架mainInitfindhebin(1) 初始化树类型的并查集void init(int n)(2) 查找元素所在集合每棵树表示一个集合,树的根作为集合的“代表元”。对于 Find 操作, 实际上沿着父指针向上找到根即可。find(int e)/路径压缩寻

11、找祖先时我们一般采用递归查找,但是当元素很多亦或是整棵树变为一条链时,每次 Find (x)都是 O(n)的复杂度,为减小这个复杂度用路径压缩,即当我们经过递推找到祖先节点后,回溯的时候顺便将它的子孙节点都直接指向祖先,这样以后再次 Find(x)时复杂度就变成 O(1)了。find(int e)(3) 合并分离的两个树对于 hebin 操作,分别找到 A,B 的代表元 sizeA ,sizeB,如果sizeA = sizeB,不进行任何操作。否则令 parentB = A,或parentA =B,即可把两棵树合并hebin(int A, int B)(4) main()主函数原理:在查找祖先

12、时,找到后对路径上的所有节点,修改其父亲,使它直接连接根结点。正确性证明:设 x 所在集合的根结点为 p,在 Father(x)的路径上的某节点为 y,当找到 p=Father(x)后,因为途经 y 节点并且 y p ,所以必调用了 Father(y)来找 p,所以 Father(y)必然为 p。当使 fay=p 后,Father(y)仍然是 p,所以不会改变 y 点的基本属性,这种做法是可行的。(1) 初始化并查集A. 数组void init(int n)for (int i = 1; i = n; +i)parenti = i; sizei = 1;B. 结构体void MAKE_SET(UFStree t,int N)int i;/定义整型变量for(i=1;i=N;i+)/当个数小于输入的 N 时循环ti.data=i;/数据为该人的编号ti.rank=0;/ 秩 初 始 化 为 0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1