串的模式匹配

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

题目:模式匹配算法KMP及其应

学院

(系):

班级:

学生学

号:

姓名:

指导教

师:

日期:

目录

摘要 (1)

一、绪论 (2)

1. 课程设计的背景 (2)

2. 课程设计的意义 (3)

3. 开发平台及其简介 (3)

二、需求分析 (3)

三、可行性分析 (5)

四、概要设计

1. 功能设计要求 (5)

2. 总体结构设计 (6)

3. 抽象数据类型串的定义 (9)

4. 函数调用关系 (10)

5. 主程序调用 (11)

五、详细设计 (12)

1. 宏定义 (12)

2. 数据元素结构定义 (13)

3. 功能具体实现 (13)

4. 主程序和菜单设计 (29)

六、设计和调试分析 (31)

七、测试结果 (33)

八、设计心得体会 (37)

九、用户手册 (37)

一十、附录 (43)

一十一、参考文献 (44)

摘要

本程序主要是通过获取一个子串,或新建一个新的文本文件,或和已有的文本文件进行匹配,分别利用了串的朴素模式匹配算法、串的模式匹配KMP算法、串的模式匹配改进算法等数据结构中学的知识实现了,在和文本文件中的主串进行匹配后返回子串在文本文件中出现的次数和出现位置所在的行的行号。

本程序除了实现串在定长顺序存储结构下的三种模式匹配算法,还实现了串在单链表存储结构下的模式匹配KMP算法,通过比较了串的不同存储结构下串的模式匹配算法,进一步加强了对串的理解及串的各类模式算法的掌握。

在使用串的定长存储结构时,考虑到书本上实现串的KMP算法时,储存串的数组下标是从1开始,为了进一步理解串,本程序另辟蹊径,特地定义了一个结构体,结构体中用来存储串的数组下标是从0开始,实现了串的模式匹配KMP算法。

本程序容错性强,功能齐全。整个程序设计从用户的角度出发,把用户的需求作为本程序设计的标准,因此菜单设计非常的人性化,且界面设计优美。同时,本程序还对串的模式匹配算法可能的应用作了设想,例如串的模式匹配在串的查找与替换功能中的应用等等。

本程序安全逻辑严密,且安全系数较高,设计了登录功能,如果没有使用权限则无法使用本系统。此外,本程序的菜单设计合理,菜单功能齐全,中间合理的提示可以让用户更好更快的掌握本系统的使用。

关键字:串匹配 KMP KMP改进定长顺序存储

一、绪论

1、课程设计的背景

《数据结构》作为一门独立的课程最早是美国的一些大学开设的,1968年美国唐欧克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作.从 60 年代末到 70 年代初,出现了大型程序,软件也相对独立, 结构程序设计成为程序设计方法学的主要内容,人们就越来越重视数据结构,认为程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法. 从 70 年代中期到 80 年代初,各种版本的数据结构著作就相继出现. 目前在我国,《数据结构》也已经不仅仅是计算机专业的教学计划中的核心课程之一,而且是其它非计算机专业的主要选修课程之一.

《数据结构》在计算机科学中是一门综合性的专业基础课.数据结构的研究

不仅涉及到计算机硬件 (特别是编码理论, 存储装置和存取方法等) 的研究范围, 而且和计算机软件的研究有着更密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题. 在研究信息检索时也必须考虑如何组织数据, 以便查找和存取数据元素更为方便. 因此, 可以认为数据结构是介于数学, 计

算机硬件和计算机软件三者之间的一门核心课程,在计算机科学中,数据结构不仅是一般程序设计(特别是非数值计算的程序设计)的基础,而且是设计和实现编译程序,操作系统,数据系统及其它系统程序和大型应用程序的重要基础. 值得注意的是,数据结构的发展并未终结,一方面,面向各专门领域中特殊问题的数据结构得到研究和发展,如多维图形数据结构等;另一方面,从抽象数据类型的观点来论数据结构,已成为一种新的趋势,越来越被人们所重视.

2、课程设计的意义

数据结构是一门实践性很强的学科。良好的系统设计和分析能力的培养需要

通过长期、系统的训练(包括理论和实践两方面)才能获得。高等学校的实践教学一般包括课程实验、综合性设计(课程设计)、课外科技活动、社会实践、毕业设计等,基本上可以分为三个层次:第一,是紧扣课堂教学内容,以掌握和巩固课程教学内容为主的课程实验和综合性设计;第二,是以社会体验和科学研究体验为主的社会实践和课外科技活动;第三,是以综合应用专业知识和全面检验专业知识应用能力的毕业设计。课程实践(含课程实验和课程设计)是大学教育中最重要也最基础的实践环节,直接影响后继课程的学习以及后继实践的质量。由于课程设计是以培养学生的系统设计与分析能力为目标,通过团队式合作、研究式分析、工程化设计完成较大型系统或软件的设计题目的,因此课程设计不仅有利于学生巩固、提高和融合所学的专业课程知识,更重的是能够培养学生多方面的能力,如综合设计能力、动手能力、文献检索能力、团队合作能力、工程化能力、研究性学习能力、创新能力等。

数据结构课程是计算机专业最重要的基础课之一,主要研究分析计算机存

储、组织数据的方式,使学生学会数据的组织方法和现实世界问题在计算机内部的表示方法,并能针对应用问题,选择合适的数据逻辑结构、存储结构及其算法,掌握解决复杂问题的程序设计方法和技术。选择合适的数据结构更容易设计出更高效运行或存储效率的算法;反之,选择了特定的算法后也需要设计合适的数据结构与之配合,以达到最佳效果。所以,在进行程序设计时必须将数据结构和与之相关的算法结合起来考虑。

相关文档
最新文档