- 1、本文档共112页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构-第五章串、数组和广义表
新世纪计算机专业系列教材 第五章 串、数组和广义表 计算机上的非数值处理对象基本上是字符串数据。在较早的程序设计语言中,字符串是作为输入和输出的常量出现的,随着语言加工程序的发展,产生了字符串处理,C++中提供了关于字符串的基本函数。 数组和广义表是与前述的线性表有所区别的数据结构。它们可以看成是线性表在下述含义上的扩展:线性表中的元素本身也是一个数据结构。 5.1 字符串 5.1.1 字符串的定义、存储结构和操作 字符串(string)是由n (n≥0) 个字符组成的有限序列。字符串简称为串,一般记为: s = a0 a1 … an-1 其中s是串名;用双引号括起来的字符序列是串值;ai (0≤in)可以是ASCII码字符中的可打印字符,通常是字母、数字等字符; i称为字符ai 在串中的位置;n称为串的长度;n =0时,s称为空串。容易与空串相混淆的一种串是空格串,空格串是由一个或多个空格组成的串,如4个空格组成的空格串“ ”,它的长度是4,而空串的长度为0。 串中任意多个连续的字符组成的子序列称为该串的子串。子串在该串中的位置就是子串的首字符在该串中的位置。 如果两个字符串对应位置的字符都相等,且它们长度相等,则称这两个字符串相等。 在C++中,串值必须用一对双引号括起来,但双引号本身不属于串。而字符用单引号括起来。串“w”和字符‘w’是两个不同的概念,前者是字符串,后者是字符。 串是一种线性结构,因此,串既可以用顺序存储结构来存储,也可以用链表存储结构来存储。由于每个字符占空间很小,只占8位二进制,所以串通常采用顺序存储结构存储,它比用链式存储结构存储效率高,实现起来也方便。 事实上,在PASCAL、C、C++等程序设计语言中,关于串的表示以及基本函数,都采用顺序存储结构。 采用顺序存储结构时,数组名指出了串在内存中的首地址。 有两种表示串长度的方法: (1)在存储串的数组末尾添加一个结束标识符; (2)用一个单独的长度参数。 计算机高级语言一般采用第一种方法表示串的长度。实际上,C++是在存储串的数组末尾添加一个ASCII编码值为0的空字符(标识符为NULL)作为结束标识符。 下述语句定义了一个字符数组并赋初值Data Structure: char str[ ]= Data Structure; 字符串Data Structure在内存中的存储形式如下: 5.1.2 串的操作 下面讨论串的操作,为了方便讨论,我们先定义如下几个串: s1 = It is a car s2 = jeep s3 = car 串的操作主要有: (1)???求串的长度。例如,s1的长度为11,s2的长度为4。 (2)? 把一个串的值赋值给另一个串。若有s4=s3,则s4 的值为 car。 (3)? 把两个串连接形成一个长度为两个串长度之和的新串。设s5为s2和s3连接形成的新串,则s5=jeepcar,即将后面的串连接在前面串的尾部。 (4)?? 比较两个串的ASCII码值的大小。设str1和str2为两个串,按下述规则得到两个串的比较结果。 若str1小于str2,比较结果为-1; 若str1等于str2,比较结果为0; 若str1大于str2,比较结果为1。 (5)??在一个串(称为主串)中查找是否存在和另一个串相等的子串。 设在串str1中查找串str2,这里str1是主串, str2是子串。若主串str1中存在和串str2相等的子串,则操作结果为str2在串str1中首次出现的位置,即str2的首字符在str1中匹配的位置; 若主串str1中不存在和串str2相等的子串,则操作结果为-1。 例如,在串s1中查找到存在和串s3相等的子串,则操作结果为8。在串s1中未查找到和串s2相等的子串,则操作结果为-1。 (6)?? 在一个串中是否存在一个字符。 设在串str中查找字符ch,若串str中存在字符ch,则操作结果为字符ch在串str中第一次出现的位置; 若串str中不存在字符ch,则操作结果为-1。 例如,在串s2中查找字符e,则操作结果为1;在串s2中查找字符c,则操作结果为-1。 (7)??截取子串形成一个新串。 设str为要截取的串,pos为要截取的起始位置,length为要截取的长度,则形成的新串长度为length。 如果从s1串截取起始位置为3(这里是从0开始)、长度为2的子串放在s6中,则s6=is。 (8)??在一个串中插入另一个串。设把串str2插入到串str1中,pos为要插入的起始位置,则操作结果形成的新串长度为str1和str2之和。 例如,把串s7= not,插入到串s1的位置5处
您可能关注的文档
- 数位学习未来趋势.ppt
- 数位影音典藏技术简介 .ppt
- 数位教材制作及教学相关著作权须知.ppt
- 数位相机专题报告.ppt
- 数位式高性能太阳能路灯之研制.ppt
- 数位气象台研究报告.ppt
- 数值分析-第4章数据拟合和函数逼近.ppt
- 数值分析-第6章数值积分与数值微分.ppt
- 数值分析-第7章常微分方程数值解法.ppt
- 数值分析-第8章线性方程组的解法.ppt
- 答案基础知识水平技能模块纸中博f6uk dec.pdf
- 成果william h mcraven知识点结文WilliamH Mcraven.pdf
- 此内容已从iopscience向下滚动以查看全文tmrice epl 011.pdf
- diet节菜肴人会相信健康ufc holiday dishes04 Ufcdolce饮食假.pdf
- crs全球征税背景下大陆高净值人士财产隐身与税务筹划攻略土豪必读.pdf
- 浙江联合利华俱乐部大三二面大二.pdf
- 冬季假期阅读级单词计数访问各级别级本书.pdf
- 在洪水力系数上开口端短长度挤压电影阻尼器从理论到练习后背gt2017-63152.pdf
- 该由印刷页面空白页一个报告组成.pdf
- sigma-a4978共aldrich安全数据表.pdf
文档评论(0)