- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
撒是第章串概要
一、教学内容:1、 串的概念;2、 串的存储结构;3、 串的运算。二、教学要求:1、 理解串的基本操作的定义,并能利用这些基本操作来实现串的其它各种操作的方法;2、 熟练掌握在串的顺序存储结构上实现串的各种操作的方法3、 了解串操作的应用方法和特点。 第四章 串 4.1 串类型的定义 4.2 串的表示和实现 4.2.1 定长顺序存储表示 4.2.2 串的块链存储表示 4.3 串的模式匹配 算法种类 ② BF算法的实现—即Index()操作的实现 (见教材P68) 改进的算法:KMP算法(特点:速度快) 数 据 结 构 第四章 串 4.1 串类型的定义 一、串和基本概念 串(String)是零个或多个字符组成的有限序列。一般记作S=“a1a2a3…an”,其中S 是串名,双引号括起来的字符序列是串值;ai(1≦i≦n)可以是字母、数字或其它字符;串中所包含的字符个数称为该串的长度。长度为零的串称为空串(Empty String),它不包含任何字符。 通常将仅由一个或多个空格组成的串称为空白串(Blank String) 注意:空串和空白串的不同,例如“ ”和“”分别表示长度为1的空白串和长度为0的空串。 串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。通常将子串在主串中首次出现时的该子串的首字符对应的主串中的序号,定义为子串在主串中的序号(或位置)。例如,设A和B分别为 A=“This is a string” B=“is” 则B是A的子串,A为主串。B在A中出现了两次,其中首次出现所对应的主串位置是3。因此,称B在A中的序号(或位置)为3。 空串是任意串的子串,任意串是其自身的子串。 通常在程序中使用的串可分为两种:串变量和串常量。串常量和整常数、实常数一样,在程序中只能被引用但不能不能改变其值,即只能读不能写。通常串常量是由直接量来表示的,例如语句Error(“overflow”)中“overflow”是直接量。但有的语言允许对串常量命名,以使程序易读、易写。如C++中,可定义 const char path[]=“dir/bin/appl”; 这里path是一个串常量,对它只能读不能写。串变量和其它类型的变量一样,其取值是可以改变的。 三、 串的基本运算概述 为描述方便,假定用大写字母表示串名,小写字母表示组成串的字符。 1. 串复制 strcpy(S,T) 表示将T串的值赋给S串。 2. 联接 strcat(T1,T2) 表示将T1串和T2串联接起来,组成一个新的T1串。 3. 求串长度 strlen (T) 求T串的长度。 4.子串 substr (S, i, len) 表示截取S串中从第i个字符开始连续len个字符,构成一个新串(显然该新串是S串的子串)。 5.串比较大小 strcmp(S,T) 比较S串和T串的大小,若ST,函数值为负,若S=T,函数值为零,若ST,函数值为正。 6. 串插入 insert (S,i,T) 在S串的第i个位置插入T串。 7. 串删除 delete(S,i,len) 删除串S中从第i个字符开始连续len个字符。 8. 求子串位置 index(S,T) 求T子串在S主串中首次出现的位置,若T串不是S串的子串,则位置为零。 9. 串替换 Replace (S1,i,j,S2) 用S2串替换S1串中第i个字符开始的连续j个字符。 利用上述九种基本运算还可以组合成字符串的其他 有关操作。 三、串的基本操作 对于串的基本操作,许多高级语言均提供了相应的运算或标准库函数来实现。下面先介绍几种在C语言中常用的串运算。 定义下列几个变量: char s1[20]=“dirtreeformat”,s2[20]=“file.mem”; char s3[30],*p; int result; 求串长(length) int strlen(char *s); //求串的长度 例如:printf(“%d”,strlen(s1)); 输出13 (2) 串复制(copy) char *strcpy(char
文档评论(0)