第四章串与数组.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章串与数组

串和数组 ………………………………………………………………… 字符串简称为串,串的处理在计算机处理中占有重要的地位,如信息检索系统文字编辑都是以字符串数据作为处理对象。数组是相同类型数据元素的序列,数组在数值处理和非数值处理中都有十分广泛的作用。 ………………………………………………………………… 串 串的定义 串的顺序储及其基本运算 串的链式存储及其基本运算 数组 数组的定义 数组存储的排列顺序 数组的基本运算 特殊矩阵的压缩存储 稀疏矩阵 稀疏矩阵的三元组表示 稀疏矩阵的十字链表表示 本章练习题 ………………………………………………………………… 串 本节讨论串的定义、逻辑结构、各种存储方式及其基本运算的实现。 4.1.1 串的定义 1、串 ???  串(String)是零个或多个字符组成的有限序列。一般记为 ??????????????????? S=a1a2……an  其中 ???  ①S是串名 ???  ②双引号括起的字符序列是串值;   ? 将串值括起来的双引号本身不属于串,它的作用是避免串与常数或与标识符混淆。 ????? 【例】123是数字字符串,它不同于整常数123 ????? 【例】xl是长度为2的字符串,而xl通常表示一个标识符。 ???  ③ai(1≤i≤n)可以是字母、数字或其它字符; ???  ④串中所包含的字符个数称为该串的长度。 2、空串和空白串 ???  长度为零的串称为空串(Empty String),它不包含任何字符。 ???  仅由一个或多个空格组成的串称为空白串(Blank String)。 ? 注意: ???  空串和空白串的不同。 ???  【例】″ ″和″″分别表示长度为1的空白串和长度为0的空串。 3、子串和主串 ???  串中任意个连续字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。 ???  通常将子串在主串中首次出现时,该子串首字符对应的主串中的序号定义为子串在主串中的序号(或位置)。    【例】设A和B分别为 ??????????? A=This is a string? ??????????? B=is ?   则B是A的子串,B在A中出现了两次。其中首次出现对应的主串位置是3。因此称B在A中的序号(或位置)是3。 ? 注意: ???  ①空串是任意串的子串 ???  ②任意串是其自身的子串。 4、串变量和串常量 ???  通常在程序中使用的串可分为:串变量和串常量。 (1)串变量 ???  串变量和其它类型的变量一样,其取值是可以改变的。 (2)串常量 ???  串常量和整常数、实常数一样,在程序中只能被引用但不能改变其值。即只能读不能写。   ①串常量由直接量来表示的: ??? 【例】Error(overflow)中overflow是直接量。   ②串常量命名 ???  有的语言允许对串常量命名,以使程序易读、易写。 ??? 【例】C++中,可定义串常量path ????????const char path[]=dir/bin/appl; 4.1.2 串的顺序储及其基本运算 1、顺序串 ???  串的顺序存储结构简称为顺序串。 ???  与顺序表类似,顺序串是用一组地址连续的存储单元来存储串中的字符序列。因此可用高级语言的字符数组来实现,按其存储分配的不同可将顺序串分为如下两类: ???  (1)静态存储分配的顺序串 ???  (2)动态存储分配的顺序串 2、静态存储分配的顺序串 (1)直接使用定长的字符数组来定义 ??  该种方法顺序串的具体描述: ????? #define MaxStrSize 256? //该值依赖于应用,由用户定义 ????? typedef char SeqString[MaxStrSize];? //SeqString是顺序串类型 ????? SeqString S;? //S是一个可容纳255个字符的顺序串 ? 注意: ?  ①串值空间的大小在编译时刻就已确定,是静态的。难以适应插入、链接等操作 ???  ②直接使用定长的字符数组存放串内容外,一般可使用一个不会出现在串中的特殊字符放在串值的末尾来表示串的结束。所以串空间最大值为MaxStrSize时,最多只能放MaxStrSize-1个字符。   【例】C语言中以字符\0表示串值的终结。 S t u d e n t /0 字符串student在C语言的存储结构 (2)类似顺序表的定义 ???  直接使用定长的字符数组存放串内容外,可用一个整数来表示串的长度。此时顺序串的类型定义完全和顺序表类似: ??? typedef struct {char ch[MaxStrSize]; //可容纳256个字符,并依次存储在ch[0..n]中

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档