04串、数组、矩阵.ppt

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

算法4-2 判断两个顺序串相等的算法。 已知顺序串St1和St2,如果相等则返回1,否则返回0。算法名为Equal_St(),参数为St1、St2。 4.取子串 算法4-3 从主串指定位置处取出定长子串的算法。 5.插入子串 算法4-4 把子串插入到主串指定位置的算法。 6.删除子串 算法4-5 把主串指定位置后的子串删除的算法。 已知主串St,要将从第i个字符开始的、连续m个字符删除。算法名为Delsub_St(),参数为St、i、m。 7.求子串匹配位置 算法4-6 求子串在主串首次出现的匹配位置算法。 寻求子串St2在主串St1中首次出现的起始位置,称作为字符串的“模式匹配”,St2为“模式(Patten)”,St1称为“正文(Text)”。假定主串的长度是n,子串的长度是m,nm。模式匹配的基本思想是,用模式St2中的每一个字符去与正文St1中的字符做比较,如图4-8(a)所示。 8.在指定位置后子串的匹配 算法4-7 在主串指定位置后进行子串的匹配算法。 已知主串St1和子串St2,从指定位置x处开始寻求子串St2在主串St1中首次出现的起始位置。算法名为Indsub_St(),参数为St1、St2、x。 9.子串替换 算法4-8 将主串中出现的所有子串用另一个子串替换的算法。 已知主串St1,在其中寻找出所有的子串St2,并用子串St3替换。算法名为Replace_St(),参数为St1、St2、St3。 4.1.3 串的链式存储实现 1.串的链式存储实现 当采用链式存储结构存储一个串时,就称它为“链式串”,简称“链串”。由于串是线性表的一个特例,因此,链串就是链表的一个特例。 在链串里,为了标明链串的起始位置,要有一个链串的头指针。链串的每一个存储结点里,其Data域只存放一个字符。 2.往链串里输入数据 算法4-9 往一个空链串里输入数据的算法。 往一个空链串里输入数据,就是顺序从键盘上读入一个个字符,直到接收的是回车符时为止。每读入一个字符,就为其动态地申请一个存储结点,链入链串的末尾。算法名为Create_Lt(),参数为Lt、Lt_h。最初,Lt_h为NULL。 3.链串的连接 算法4-10 两个链串的连接算法。 已知两个链串Lt1和Lt2,要求把Lt2连接到Lt1的后面。算法名为Join_Lt(),参数为Lt1、Lt2。 4.从链串指定位置插入链串 算法4-11 从链串指定位置开始插入链串的算法。 已知链串Lt1和Lt2,要求把链串Lt2插入到链串Lt1第i个字符开始的位置处。算法名为Insert_Lt(),参数为Lt1、Lt2、i。 5.从链串给定位置删除子链串 算法4-12 从链串给定位置开始删除长度一定的子链串的算法。 已知链串Lt,要求删除从第i个字符起、长度为m的子链串。算法名为Cut_Lt(),参数为Lt、i、m。 6.复制子链串 算法4-13 从链串给定位置开始复制定长链串的算法。 已知链串Lt1,希望从Lt1的第i个字符开始复制连续m个字符,组成一个新的链串Lt2。算法名为Copysub_Lt(),参数为Lt1、i、m。 4.2 数 组 4.2.2 数组的顺序存储 要把一个二维数组存储在内存里面,通常有两种方式:一是以行为主序分配,即一行存放完了接着存放下一行,直至最后一行(按行优先);一是以列为主序分配,即一列存放完了接着存放下一列,直至最后一列(按列优先)。 这里的讨论,都是针对所谓的“方阵”进行的,即行数和列数相等的矩阵。 有一些矩阵,其元素在矩阵中的分布具有一定的规律性,这样的矩阵被称作为“特殊矩阵”;另有一些矩阵,其零元素的个数远远多于非零元素的个数,但非零元素的分布却没有规律,这样的矩阵被称作为“稀疏矩阵”。 为了节约存储空间,常需要对特殊矩阵和稀疏矩阵进行压缩存储。 所谓“下三角矩阵”,是指矩阵的上三角区中元素均为常数C或0的n阶方阵;所谓“上三角矩阵”,是指矩阵的下三角区中元素均为常数C或0的n阶方阵。 没必要存储下、上三角矩阵的所有元素,仍可用压缩存储的方式,达到节省存储的目的。 对下三角矩阵采用压缩存储时,要为主对角线上的每一个元素、下三角区里的每一个元素分配单独的存储结点,为上三角区里的所有元素分配一个共享存储结点。现在只需要为n? (n+1)/2+1个元素开辟存储区。 若以行优先的方式、用一维数组压缩存储一个n?n的下三角矩阵元素,应该开辟共n? (n+1

文档评论(0)

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

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

1亿VIP精品文档

相关文档