字符串类课程设计说明书

合集下载

c有关字符串课程设计

c有关字符串课程设计

c 有关字符串课程设计一、教学目标本章节的教学目标是让学生掌握C语言中关于字符串的基本概念、操作和应用。

具体包括:1.知识目标:–理解字符串的概念及其在C语言中的表示;–掌握字符串的创建、复制、比较和长度计算等基本操作;–了解字符串数组和字符串指针的概念及应用。

2.技能目标:–能够使用C语言编写函数实现字符串的基本操作;–能够运用字符串数组和字符串指针解决实际问题。

3.情感态度价值观目标:–培养学生的逻辑思维能力和编程实践能力;–激发学生对计算机科学和编程的兴趣和热情。

二、教学内容本章节的教学内容主要包括以下几个部分:1.字符串的概念及其在C语言中的表示;2.字符串的基本操作,包括创建、复制、比较和长度计算;3.字符串数组和字符串指针的概念及应用;4.实际编程案例,运用字符串解决实际问题。

三、教学方法为了达到本章节的教学目标,将采用以下几种教学方法:1.讲授法:讲解字符串的基本概念和操作,引导学生理解字符串的内部实现和应用;2.讨论法:学生讨论字符串数组和字符串指针的概念及应用,促进学生之间的交流和思考;3.案例分析法:分析实际编程案例,让学生通过解决问题的方式掌握字符串的操作和应用;4.实验法:安排课堂实验,让学生亲自动手编写代码,巩固所学知识。

四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C程序设计原理与应用》;2.参考书:《C语言程序设计》;3.多媒体资料:讲解字符串操作的PPT;4.实验设备:计算机和编程环境。

以上教学资源将有助于丰富学生的学习体验,提高学生的学习效果。

五、教学评估为了全面、客观地评估学生在字符串课程中的学习成果,将采用以下评估方式:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性;2.作业:布置相关的字符串操作练习题,评估学生对字符串基本操作的掌握程度;3.考试:设置期末考试,涵盖字符串的概念、操作和应用等内容,以评估学生的综合运用能力。

课程设计--实现字符串的多种操作

课程设计--实现字符串的多种操作

课程设计--实现字符串的多种操作C++课程设计报告课程设计题目:实现字符串的多种操作姓名:刘欢学籍号:201110910422专业班级:计算机科学与技术2班指导教师:秦相林目录引言1.设计目的2.设计题目3.设计需求4.设计总体思路5.详细设计6.运行结果7.课程设计心得8.参考文献引言随着人们生活水平的提高,计算机发展异常迅速。

如今,计算机已经深入到我们社会的各个领域,计算机的使用也已不再局限于科学计算,它已进入人类社会的各个领域并发挥着越来越重要的作用。

通过计算机对各类信息的管理已经成为一种高效、快捷的方式。

而C++课程设计是我们实践性教学环节之一,结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。

通过课程设计的综合训练,培养我们实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学我们系统掌握C++这门课程的主要内容,本课程设计就是要求完成一个字符串类的设计,使所设计出的字符串类具有包括复制、连接、比较、求子串、交换等功能1. 设计目的本设计通过定义字符串类来实现对字符串的复制、连接、比较、求子串、交换操作。

首先定义一个字符串类,通过调用字符串类中成员函数,对字符串类进行复制,然后实现了字符串类之间的连接,字符串类之间的相互比较,求一个字符串的子串,以及实现两个字符串之间的交换。

2. 设计题目实现字符串的多种操作3.设计需求通过本次的C++课程设计,让我们学会把书本上的知识应用到了实际中来。

深入了解C++各类及相关函数的应用,结合其它相关知识,如软件工程等,把所学知识融会贯通。

对系统进行功能需求分析,设计合理的数据结构和系统框架,编程简练,程序功能齐全,能正确运行。

具有要求如下:1字符串类对象的输入输出;2.字符串的长度;3.字符串的连接;4.字符串的复制;5.字符串的比较;6.对其求子字符串;7.子串交换功能;4.设计总体思路我们设计一个程序,定义字符串类,包含存放字符串的字符数组和字符串中字符的个数。

c课程字符串课程设计

c课程字符串课程设计

c课程字符串课程设计一、教学目标本课程的教学目标是让学生掌握字符串的基本概念、操作和应用。

通过本课程的学习,学生应能够理解字符串的组成、表示和操作方法,掌握字符串的基本算法,并能够运用字符串解决实际问题。

具体来说,知识目标包括:了解字符串的基本概念,掌握字符串的常见操作,如长度计算、字符查找、字符替换等;理解字符串的常见算法,如字符串排序、查找子串等。

技能目标包括:能够运用字符串解决实际问题,如编写程序实现字符串的排序、查找等操作。

情感态度价值观目标包括:培养学生的编程兴趣,提高学生的问题解决能力,培养学生的团队合作意识。

二、教学内容本课程的教学内容主要包括字符串的基本概念、字符串的操作、字符串的算法和字符串的应用。

具体来说,教学大纲如下:1.字符串的基本概念:介绍字符串的定义、表示和基本属性。

2.字符串的操作:讲解字符串的常见操作,如长度计算、字符查找、字符替换等。

3.字符串的算法:介绍字符串的常见算法,如字符串排序、查找子串等。

4.字符串的应用:通过实例讲解如何运用字符串解决实际问题。

三、教学方法为了实现教学目标,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

通过这些教学方法的综合运用,激发学生的学习兴趣,提高学生的主动性和参与度。

具体来说:1.讲授法:通过讲解和示例,让学生掌握字符串的基本概念和操作。

2.讨论法:学生进行小组讨论,培养学生的团队合作能力和问题解决能力。

3.案例分析法:通过分析实际案例,让学生了解字符串的应用和解决实际问题的方法。

4.实验法:安排实验课,让学生动手编写程序,巩固所学知识,培养学生的实践能力。

四、教学资源为了支持教学内容的实施和教学方法的应用,我们将选择和准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统、全面的学习资料。

2.参考书:推荐学生阅读相关参考书籍,丰富学生的知识储备。

3.多媒体资料:制作课件、教学视频等多媒体资料,提高课堂教学效果。

C课程设计__字符串类

C课程设计__字符串类

湖南人文科技学院运算机系课程设计说明书课程名称: C++程序设计课程代码: 408025 题目:字符串类的设计年级/专业/班: 09级运算机软件工程专业本二班学生姓名: 田昌亮、文曦远、向文魁、张志丹、魏齐学号: 09436221~09436225 指导教师:袁辉勇开题时间: 2008 年 10 月 27 日完成时间: 2010 年 9 月 25 日目录摘要................................................. 错误!未定义书签。

一、引言.............................................. 错误!未定义书签。

二、设计目的与任务...................................... 错误!未定义书签。

三、设计方案............................................ 错误!未定义书签。

1、整体设计......................................... 错误!未定义书签。

2、详细设计......................................... 错误!未定义书签。

3、程序清单......................................... 错误!未定义书签。

4、程序调试与体会................................... 错误!未定义书签。

5、运行结果......................................... 错误!未定义书签。

四、结论.............................................. 错误!未定义书签。

五、参考文献............................................ 错误!未定义书签。

字符串操作(算法与数据结构课程设计)

字符串操作(算法与数据结构课程设计)

字符串操作一、问题描述字符串是一种常见的数据类型,在现实生活中有着广泛的应用。

本次课程设计需要选择合适的结构完成字符串的建立,实现串的基本操作,编写三种模式匹配算法和字符串的加密与解密算法,并利用它们实现字符串的应用:包括文本文件对单词的检索和计数。

二、基本要求程序要求选择合适的存储结构,并实现以下功能:1.完成串的基本操作,如:串的赋值,比较,连接,插入,删除;2.实现串的模式匹配,包括:穷举法,BF算法和KMP算法;3.字符串的应用:字符串的加密与解密;文本文件单词的计数;文本文件单词的检索;三、测试数据1.对模式匹配(穷举法,KMP算法和BF算法)的测试:如:在“asd sfhasd asd”中找从第3个下标开始匹配的模式串“asd”。

2.对加密与解密的测试:如:对串“afhbs 537hsj/sjdh”加密,再将加密后的串还原。

3.对文本文件单词的计数和检索的测试:如创建一个文本文件,在其中对单词“me”进行计数并且检索其所处行、列。

四、算法思想1、用结构体SString记录字符串信息,其中ch代表字符串,length代表字符串长度。

2、模式匹配:1)穷举法的Index(S,T,pos):从位置开始通过SubString截取S中T长度的字符串,并与T通过StrCompare进行比较,若找到则返回位置;否则继续。

若没找到,返回-1。

2)BF算法: IndexBF(S, T,pos)主串S从pos位置开始,模式串T从0位置开始,从目标串s=“s0s2…sn-1"的第一个字符开始和模式串t=“t0t2…tm-1"中的第一个字符比较,若相等,则继续逐个比较后续字符;否则从目标串s的第二个字符开始重新与模式串t的第一个字符进行比较。

依次类推,若从模式串s的i位置字符开始,每个字符依次和目标串t中的对应字符相等,则匹配成功,该算法返回i;否则,匹配失败,函数返回-1。

3)KMP算法:该算法较BF算法有较大改进,主要是消除了主串指针的回溯,从而使算法效率有了某种程度的提高。

字符串类课程设计说明书

字符串类课程设计说明书

目录前言 (1)正文 (1)2.1设计的目的和意义 (1)2.2目标与总体方案 (1)2.3设计方法和内容 (2)2.3.1开发环境 (2)2.3.2设计流程图 (2)2.3.3设计内容 (3)2.4设计创新和关键技术 (4)2.5结论 (5)致谢 (6)参考文献 (6)附录 (7)前言在科技日新月异的今天,电脑成为人的生活中不可缺少的一部分。

作为计算机专业的学生,应该充分利用所学知识,把实际问题转移到电脑上去,通过电脑的编程,使复杂问题简单化,深奥问题浅显化,抽象问题具体化。

在学过面向对象的语言C++后,我们对计算机有了更深的了解。

计算机科学是一种创造性思维活动,其教育必须面向设计。

“数据结构”正是一门面向设计,且处于计算机学科核心地位的技术基础和主干必修课。

字符串数据是计算机非数值处理的主要对象之一。

随着语言加工程序的发展,许多语言增加了字符串类型,在程序中可以使用字符串变量进行一系列字符串操作[1]。

例如:在事务处理程序中,顾客的姓名和地址以及货物的名称、产地和规格等。

要是将这些信息用计算机存储起来,进行各种操作都会很方便了。

在这里,我针对字符串的处理写了许多操作,这将对信息检索系统有很大的作用。

本次设计主要设计的是关于字符串类的研究。

在里面囊括了串的多种实现方式,如顺序存储;建立一个值和某个字符串相等的串,块链存储。

其次,在本次设计中,可以对串进行求长度,判断是否为空,清空某个串,在主串中插入一个子串,在主串中删除一个子串,返回主串的的某个子串,将字符串反转输出,将主串的某个子串用另一个串替换,复制一个串,将两个串进行比较,将两个串联结在一起,求一个子串在主串中第一次出现的位置,查找字符串中元音字母的个数,判断一个串是否是回文,串的大小写转换,将一个串转换成整数。

此次设计应用广泛,文字编辑程序、事务问答系统、自然语言翻译系统、音乐分析程序等都可以应用这个原理实现。

正文数据结构指的是数据之间的逻辑关系以及数据在计算机中的存储方式。

c课程设计字符串操作

c课程设计字符串操作

c 课程设计字符串操作一、教学目标本章节的教学目标是让学生掌握C语言中字符串的基本操作,包括字符串的创建、复制、连接、比较和长度计算等。

知识目标要求学生理解字符串在计算机中的存储和表示方式,以及字符串操作的相关函数和语法。

技能目标要求学生能够熟练使用C语言进行字符串操作,解决实际问题。

情感态度价值观目标则是培养学生的编程兴趣,提高学生解决问题的能力,培养学生的创新思维和团队合作意识。

二、教学内容本章节的教学内容主要包括字符串的概念、字符串的创建和复制、字符串的连接和比较、字符串的长度计算等。

具体的教学大纲如下:1.字符串的概念:介绍字符串的定义、特点和表示方式。

2.字符串的创建和复制:讲解字符串的创建方法,以及如何复制字符串。

3.字符串的连接和比较:讲解如何连接两个字符串,以及如何比较两个字符串的大小。

4.字符串的长度计算:讲解如何计算字符串的长度。

三、教学方法为了激发学生的学习兴趣和主动性,本章节将采用多种教学方法。

包括讲授法、案例分析法和实验法等。

首先,通过讲授法向学生介绍字符串的基本概念和操作。

然后,通过案例分析法分析实际问题,让学生学会如何运用字符串操作解决实际问题。

最后,通过实验法让学生动手实践,巩固所学知识。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:《C程序设计语言》(K&R)或《C Primer Plus》。

2.参考书:《C++ Primer》或《C和指针》。

3.多媒体资料:讲解字符串操作的视频教程。

4.实验设备:计算机和网络设备,以便进行编程实践。

五、教学评估本章节的教学评估将采用多元化评价方式,全面反映学生的学习成果。

评估方式包括平时表现、作业、考试等。

平时表现主要评估学生在课堂上的参与程度、提问回答等情况,占总评的20%。

作业评估包括课后练习和编程任务,占总评的30%。

考试评估包括期中考试和期末考试,占总评的50%。

字符串分类课程设计

字符串分类课程设计

字符串分类课程设计一、课程目标知识目标:1. 让学生掌握字符串的基本概念,理解字符串在计算机科学中的重要性;2. 学会运用不同的方法对字符串进行分类,并能解释分类的原理;3. 掌握字符串比较、查找和替换等基本操作,并了解其在实际问题中的应用。

技能目标:1. 培养学生运用计算机编程语言对字符串进行分类和处理的能力;2. 培养学生运用所学知识解决实际问题的能力,提高逻辑思维和编程技巧;3. 培养学生团队协作和沟通交流能力,通过小组讨论和实践,共同完成字符串分类任务。

情感态度价值观目标:1. 激发学生对计算机科学的兴趣,培养积极的学习态度和探索精神;2. 培养学生认真细致的工作作风,严谨的科学态度,对编程过程中出现的问题能积极面对并解决;3. 培养学生遵守道德规范,尊重他人成果,养成良好的学术道德和团队协作精神。

课程性质:本课程为计算机科学与技术学科的基础课程,旨在使学生掌握字符串的基本概念和操作,培养编程思维和实际应用能力。

学生特点:学生为初中生,具备一定的计算机操作基础,对编程有一定了解,但尚未系统学习字符串相关知识。

教学要求:结合学生特点,课程设计应注重理论与实践相结合,注重启发式教学,引导学生主动探索和解决问题,提高学生的动手实践能力。

教学过程中,注重分层教学,关注每个学生的学习进度,确保课程目标的达成。

二、教学内容1. 字符串基本概念:介绍字符串的定义、性质和表示方法,使学生了解字符串在计算机科学中的重要作用。

教学内容:教材第3章“字符串及其表示方法”。

2. 字符串分类方法:讲解字符串分类的原理,包括基于字符、长度、出现频率等不同分类方法。

教学内容:教材第4章“字符串操作与处理”,第1-2节。

3. 字符串基本操作:介绍字符串比较、查找、替换等基本操作,并通过实例讲解其在实际问题中的应用。

教学内容:教材第4章“字符串操作与处理”,第3-4节。

4. 编程实践:组织学生进行小组合作,运用所学知识编写程序,实现对字符串的分类和操作。

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

字符串类课程设计说明书目录前言 (1)正文 (2)2.1设计的目的和意义 (3)2.2目标与总体方案 (3)2.3设计方法和内容 (4)2.3.1开发环境 (4)2.3.2设计流程图 (4)2.3.3设计内容 (5)2.4设计创新和关键技术 (11)2.5结论 (13)致谢 (13)参考文献 (15)附录 (16)前言在科技日新月异的今天,电脑成为人的生活中不可缺少的一部分。

作为计算机专业的学生,应该充分利用所学知识,把实际问题转移到电脑上去,通过电脑的编程,使复杂问题简单化,深奥问题浅显化,抽象问题具体化。

在学过面向对象的语言C++后,我们对计算机有了更深的了解。

计算机科学是一种创造性思维活动,其教育必须面向设计。

“数据结构”正是一门面向设计,且处于计算机学科核心地位的技术基础和主干必修课。

字符串数据是计算机非数值处理的主要对象之一。

随着语言加工程序的发展,许多语言增加了字符串类型,在程序中可以使用字符串变量进行一系列字符串操作[1]。

例如:在事务处理程序中,顾客的姓名和地址以及货物的名称、产地和规格等。

要是将这些信息用计算机存储起来,进行各种操作都会很方便了。

在这里,我针对字符串的处理写了许多操作,这将对信息检索系统有很大的作用。

本次设计主要设计的是关于字符串类的研究。

在里面囊括了串的多种实现方式,如顺序存储;建立一个值和某个字符串相等的串,块链存储。

其次,在本次设计中,可以对串进行求长度,判断是否为空,清空某个串,在主串中插入一个子串,在主串中删除一个子串,返回主串的的某个子串,将字符串反转输出,将主串的某个子串用另一个串替换,复制一个串,将两个串进行比较,将两个串联结在一起,求一个子串在主串中第一次出现的位置,查找字符串中元音字母的个数,判断一个串是否是回文,串的大小写转换,将一个串转换成整数。

此次设计应用广泛,文字编辑程序、事务问答系统、自然语言翻译系统、音乐分析程序等都可以应用这个原理实现。

正文数据结构指的是数据之间的逻辑关系以及数据在计算机中的存储方式。

我们现在所使用的计算机的硬件结构主要是面向数值计算的需要,基本上没有提供处理字符串数据的操作指令,需要用软件实现字符串数据类型,在不同的应用中,所处理的字符串具有不同的特点[2]。

作为计算机专业的学生,应该努力学好各种计算机语言,培养编程创新的能力。

2.1 设计的目的和意义目的:程序=算法+数据结构。

本次设计主要是研究串类的各种操作方式。

集合了串的各种操作算法并对此进行编程,熟悉了解并掌握串的各种算法,对以后做信息检索系统等都有很大的用处。

意义:字符串是一个计算机进行输入输出的主要数据对象。

在计算机内部计算和处理数据时,这是一个数据的值和表示形式之间关系的问题。

在web应用设计中,不同页面之间传递参数采用字符串。

当人们坐在计算机前面输入数据时,通过键盘操作和鼠标的点击,传递给计算机内部的都是字符串数据。

所以研究字符串的结构非常必要[3]。

2.2 目标与总体方案目标:建立一个操作菜单。

通过选择菜单里的选项,达到操作字符串,实现串的不同建立,求串的长度,判断一个串是否为空,清空某个串,在主串中插入一个子串,在主串中删除一个子串,返回主串的的某个子串,将字符串反转输出,将主串的某个子串用另一个串替换,复制一个串,将两个串进行比较,将两个串联结在一起,串的大小写转换,将一个串转换成整数等目的。

总体方案:首先,建立一个字符串。

建立字符串的方式有:顺序存储、建立一个值为某个串的字符串、块链存储。

再依次实现其它操作。

2.3 设计方法和内容2.3.1开发环境硬件环境:一台联想计算机,其配置为:CPU: Pentium(R)4 2.4GHz 内存:256MB 硬盘:40G 主板:SIS651-A201-8100.软件环境:Microsoft Windows XP Professional 版本 2002 Service Pack 2 并且安装了可供编程的Microsoft visual C++6.0.2.3.2设计流程图本次程序的类命名为String,里面的成员函数包括:逻辑bool类型的有StrAssign(char *chars)(利用已有的一个char串建立一个字符串),Insert()(在主串中插入一个子串),Delete()(在子串中删除一个子串),substring (String &sub)(返回主串中的一个子串),concat(String s)(将两个字符串连接起来);整型的有Length()(求一个字符串的长度),Index()(匹配模式),compare(String s)(比较两个字符串的大小),Huiwen(char*str)(判断一个字符串是否是回文),count_vowel(const char *s)(计算串中元音字母个数);还有display()(输出函数),clear()(将一个字符串清空),Strcopy()(复制一个字符串),Strrev()(将一个字符串反转输出)。

具体流程如图一:图2-1 设计流程图2.3.3设计内容在各种高级语言的编译程序中,源程序和目标程序都被处理成字符串数据,各种源程序编辑器的功能强弱有差异,但其基本操作是一致的,一般都包括串的查找、插入、删除、转换等[4]。

本设计中,整个程序分为三个独立的文档。

其中包括:头文件string.h,源文件string.cpp和main.cpp。

头文件包括一个类class String,里面是对各个函数进行声明。

类的私有成员有一维数组str1[40]。

字符串的最大长度maxlen;字符串的当前长度curlen。

串是一种特殊的线性表,它的每一个元素仅有一个字符所组成。

因此可以用线性表的存储方法来存储串。

串的实现方式大致分为三种:1.串的顺序存储;2.串的块链存储;3.串的堆分配存储。

串的顺序存储是用一组地址连续的储存单元存储字符串的字符序列,这样的存储结构访问一组连续字符非常方便,体现了顺序表的优点:随机存储[6]。

串的块链丰储类似线性表中的链表,不过在一个结点中它储存的并不是一个字符,而是一个字符串,一般来说,以块链作为存储结构时实现串的操作比较麻烦。

串的堆分配存储的特点是串变量的存储空间是程序执行过程中动态分配而得,程序中出现的所有串变量可用的存储空间是一个称之为“堆”的共享空间。

在本设计中,运用的是已知一个字符串再建立一个字符串。

[8]存储方式的代码如下:bool SString::StrAssign(char *chars) //生成一个值为chars的串{if(strlen(chars)>maxsize) //判断chars的长度是否比串的长度大return false; //大,则错误else{curlen=strlen(chars); //令串的长度等于chars的长度for(int i=1;i<=curlen;i++)str1[i-1]=chars[i-1]; //串的内容等于chars里面的内容}return true;}经过从键盘输出chars里面的数据,能得到字符串。

调试结果如下图:图2-2 建立字符串确定建立串的程序正确之后,就可以逐渐加入其它程序段了。

串的长度是求该字符串的当前长度。

因为它有自己的当前长度curlen,所以return curlen就可以求出字符串的长度。

[11]插入和删除是字符串中两个常见的操作。

插入操作是指将一个指定的串插入到当前串中的指定位置。

插入的算法是:(1)当插入位置超出合法的范围,即当pos<0或pos>curlen时,显示出错信息并终止。

(2)当插入后的新串长度超出当前串的最大值,即curlen+tlen>=maxlen-1时,重新分配空间。

(3)将当前串中从pos开始至串尾的一些字符后移留出tlen个空位,然后将子串插入到对应的空位中。

(4)更新当前串的长度为curlen+tlen,返回当前串。

删除操作是指删除当前串中指定范围内的串值。

删除的算法是:(1)输出所要删除的子串的位置pos及子串的长度tlen。

(2)检查位置的合法性。

即当pos>curlen-1或pos<0或tlen<1,显示出错信息并终止。

(2)若长度超出最大可供删除的长度,即当tlen>curlen-pos时,则按截尾法对tlen进行调整。

(3)确定新串的长度为curlen-tlen,删除当前串中从pos开始的长度为tlen的子串,即重新形成当前串中pos开始至新串串尾cluren-1的一些字符,这些字符分别由相隔tlen个位置的对应字符前移而来。

(5)返回当前串。

子串的定位操作通常称为字符串的模式匹配,是指在当前串中查找与子串,若查找成功则返回该子串的位置。

[13]定位操作的基本思想是:(1)设主串S=s1,s2,…sn,子串P=p1,p2,…pm。

(2)i为指向S中字符的指针,j为指向P中字符的指针,从主串S中第pos个字符起和模式中第一个字符比较。

若相等,则继续逐个比较后续字符;否则从主串的下个字符起再重新和模式字符比较。

(3)匹配失败:si!=pj时,(si-j+1 …si-1)=(p1 … pj-1)。

(4)回溯:i=i-j+1;j=0.此程序由于重复回溯太多,所以时间复杂度是O(m*n)。

[9]改进后的模式匹配算法称作KMP算法。

这个算法是同 D.E.Knuth, J.H.Morris, V.R.Pratt同时发现的。

在该算法中指针i没有回溯。

它的核心思想是利用已经得到的部分匹配信息来进行后面的匹配过程。

改进后的算法如下:int String::Index_KMP(char *t,int k) //KMP算法{int i,j,tlen;i=k;j=0;tlen=strlen(t);while((i<curlen)&&(j<tlen))if(str[i]==t[j]){i++;j++} //如果子串和主串相等,两个下标均自增elsej=next[j];if(j==tlen)return (i-tlen);else return -1;}复制字符串是指将一个已知的字符串复制,定义一个char型指针T,并开辟一块空间。

令T等于已被定义的str即可。

[16]串的比较的算法是:在两个串的当前长度范围内,逐个取出字符进行比较,一旦发现不相等,立即根据大于或小于的关系返回位置值。

串的联结是指把第二个串直接放到第一个串的尾部,再修改第一个串的长度。

基本算法是:先判断两个串S1,S2连接起来是否大于串S,若不大,则先把串S1的所有字符放入串S中,然后将串S2的所有字符放在串S1的后面依次放入串S中,并返回逻辑真。

相关文档
最新文档