- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第5章串1总体要求:熟悉串类型的定义熟悉串的抽象数据类型描述中各种操作的含义熟练掌握顺序存储串的各种算法熟练掌握链式存储串的各种算法核心技能点:选择串的各种存储结构应用于实际问题的能力熟练掌握顺序存储串的各种算法实现的能力熟练掌握链式存储串的各种算法实现的能力合理应用字符串的各种操作的能力扩展技能点:C语言环境下字符串各种操作的实现
第5章串相关知识点:C语言字符数组的知识C语言结构体的知识C语言字符串指针的知识C语言函数及参数传递的知识学习重点:熟悉串类型的定义熟悉串的抽象数据类型描述中各种操作的含义掌握串各种存储结构下算法的实现2
第5章串35.1串的应用实例及基本概念计算机处理的对象有数值数据和非数值数据,字符串是最基本的非数值数据,如在汇编和高级语言的编译程序中,源程序和目标程序都是字符串数据;在事务处理程序中,如学生的姓名、家庭地址、爱好特长等,一般也是作为字符串处理的。随着计算机的发展,串在文字编辑、信息检索、符号处理等许多领域得到越来越广泛的应用。在这些应用中,涉及到字符数据如何组织、如何存储、进行什么样的操作等等。比如,在文本编辑中,主要工作是修改字符数据的形式和格式,也就是对字符串进行查找、插入、删除和修改等操作。串(string)是由零个或多个字符组成的有限序列。一般记作:S=”a0a1…an-1”
第5章串4其中:S是串名,用双引号括起来的字符序列为串值,引号是界限符,ai(0≤i≤n-1)是一个任意字符(字母、数字或其他字符),它称为串的元素,是构成串的基本单位;串中所包含的字符个数n称为串的长度,当n=0时,称为空串,通常记为Ф。将串值括起来的双引号本身不属于串,它的作用是避免串与常数或与标识符混淆。例如,A=”123”是数字字符串,长度为3,它不同于整常数123;B=”lxx”是长度为3的字符串,而lxx通常表示一个标识符。常将仅由一个或多个空格组成的串称为空白串。注意空串和空白串的不同,例如””和””分别表示长度为1的空白串和长度为0的空串。
第5章串5串中任意连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。通常称字符在序列中的序号为该字符在串中的位置。子串在主串中的位置则以子串的第一个字符首次在主串中的位置来表示。例如,设有两个字符串A和BA=”Thisisastring.”B=”is”则它们的长度分别为17、2。B是A的子串,A为主串。B在A中出现了两次,其中首次出现所对应的主串位置是2。因此,称B在A中的序号(或位置)为2。若两个串的长度相等且对应字符都相等,则称两个串是相等的。当两个串不相等时,可按“字典顺序”分大小。
第5章串65.2串的存储结构因为串是数据元素类型为字符型的线性表,所以线性表的存储方式仍适用于串,也因为字符的特殊性和字符串经常作为一个整体来处理的特点,串在存储时还有一些与一般线性表不同之处。5.2.1串的顺序存储串的顺序存储结构简称为顺序串。与顺序表类似,顺序串是用一组地址连续的存储单元来存储串中的字符序列。因此可用高级语言的字符数组来实现,按其存储分配的不同可将顺序串分为静态存储分配顺序串和动态存储分配的顺序串两类。
第5章串71.静态存储分配顺序串所谓静态存储分配是指按预定义的大小,为每一个串变量分配一个固定长度的存储区,即串值空间的大小在编译时刻就已确定,是静态的。所以串空间最大值为MaxSize时,最多只能放MaxSize-1个字符。其类型描述如下:#defineMaxSize256/*该值依赖于应用,由用户定义*/typedefstruct{charstr[MaxSize];/*256个字符依次存储在str[0]...str[MaxSize-1]中。*/intlength;}String;/*String是顺序串类型,则串的最大长度不能超过255。*/Strings;/*定义串变量s*/在直接使用定长的字符数组存放串内容外,一般可使用一个不会出现在串中的特殊字符放在串值的末尾来表示串的结束。例如,C语言中以字符\0表示串值的终结。
第5章串8C语言中串的静态存储结构如图5.1所示。图5.1C语言中串的静态存储结构
第5章串92.动态存储分配的顺序串(堆串)这种存储表示的特点是:仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中动态分配而得。系统将一个地址连续、容量很大的存储空间作为字符串的可用空间,每当建立一个新串时,系统就从这个空间中分配一个大小和字符串长度相同的空间存储新串的串值。假设以一维数组heap
文档评论(0)