华东理工大学数据结构第4章.ppt

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

数 据 结 构 信息学院 第四章 串 4.1 串抽象数据类型的定义 4.2 串的表示和实现 4.2.1 定长顺序存储表示 4.2.2 堆分配存储表示 4.2.3 串的块链存储表示 4.3 串的模式匹配算法 * * 一、串和基本概念 串(String)是零个或多个字符组成的有限序列。   一般记作S=“a1a2a3…an”,其中S 是串名,引号括起来的字符序列是串值; ai可以是字母、数字或其它字符; 串的长度:串中所包含的字符个数。 空串“” :长度为零的串,它不包含任何字符。  空格串“ ” :仅由一个或多个空格组成的串,长度为1. 4.1 串类型的定义 子串:串中任意个连续字符组成的子序列. A=“This is a string” B=“is” 主串:包含子串的串。 子串的位置:子串在主串中首次出现时的该子串的首字符对应的主串中的序号. 则B是A的子串,A为主串。B在A中的位置为3. 空串是任意串的子串,任意串是其自身的子串。 串相等:称两个串是相等的,是指两个串的长度相等且对应字符都相等。 在程序中使用的串可分为两种:串变量和串常量。串常量只能读不能写,串变量取值是可以改变的。 串与线性表比较: (1)数据结构上相似,而串的数据对象约束为字符集。 (2)基本操作很大差别。  线性表--“单个元素”作为操作对象  串---- “串的整体”作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。 二、串的抽象数据类型定义 串的抽象数据类型定义 ADT String { 数据对象:D={ ai |ai∈CharacterSet, i=1,2,...,n, n≥0 } 数据关系:R1={ ai-1, ai | ai-1, ai ∈D, i=2,...,n } 基本操作: 1.求串长StrLength(s) 操作条件:串s存在 操作结果:求出串s的长度。 2.串赋值StrAssign(s1,s2) 操作条件: s1是一个串变量,s2或者是一个串常量,或者是一个串变量(通常s2 是一个串常量时称为串赋值,是一个串变量称为串拷贝)。 操作结果:将s2的串值赋值给s1, s1原来的值被覆盖掉。 3.连接操作 :StrConcat (s1,s2,s) 或StrConcat (s1,s2) 操作条件:串s1,s2存在。 操作结果:两个串的联接就是将一个串的串值紧接着放在另一个串的后面,连接成一个串。前者是产生新串s,s1和s2不改变; 后者是在s1的后面联接s2的串值,s1改变, s2不改变。 例如: s1="he",s2=" bei",前者操作结果是s="he bei";后者操作结果是s1="he bei"。 4.求子串SubStr (s,i,len): 操作条件:串s存在,1≤i≤StrLength(s),0≤len≤StrLength(s)-i+1。 操作结果:返回从串s的第i个字符开始的长度为 len 的子串。len=0得到的是空串。 例如:SubStr("abcdefghi",3,4)= "cdef" 5.串比较 StrCmp(s1,s2) 操作条件:串s1,s2存在。 操作结果:若s1==s2,操作返回值为0;若s1s2, 返回值0;若s1s2, 返回值0。 6.子串定位 StrIndex(s,t):找子串t在主串s中首次出现的位置 操作条件:串s,t存在。 操作结果:若t∈s,则操作返回t在s中首次出现的位置,否则返回值为-1。 如:StrIndex("abcdebca","bc")=2 StrIndex("abcdebda","ba")=-1 7.串插入 StrInsert(s,i,t) 操作条件:串s,t存在,1≤i≤StrLength(s)+1。 操作结果:将串t插入到串s 的第i个字符位置上,s的串值发生改变。 8.串删除 StrDelete(s,i,len) 操作条件:串s存在,1≤i≤StrLength(s),0≤len≤StrLength(s)-i+1。 操作结果:删除串s 中从第i个字符开始的长度为len的子串,s的串值改变。 9.串替换 StrRep(s,t,r) 操作条件:串s,t,r存在,t不为空。 操作结果:用串r 替换串s中出现的所有与串t相等的不重叠的子串,s的串值改变。 } ADT String 串的运算有很多,串赋值StrAssign、串复制Strcopy、串比较StrCompare、求串长StrLength、串联接Concat和求子串SubString等六种

文档评论(0)

duyingjie1 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档