《数据结构A》第04章.pptVIP

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

第4章 数组和字符串 4.1 数组 4.2 特殊矩阵 4.3 稀疏矩阵 稀疏矩阵: 大多数元素为零的矩阵称为稀疏矩阵。 对于稀疏矩阵可只存非零元素。 4.4 字符串 4.4.1 字符串ADT 字符串的定义 字符串(简称为串)是由n(?0)个字符组成的有限序列。 S=“a0 a1 … an-1” ( n≥0 ) 其中,S 是串名,单引号括起来的字符序列是串S的值。n 是串中字符个数,又称串长度,n=0的串称为空串。 要注意区分空串和空白串。 ADT String{ 数据: 字符串是由n(≥0)个字符组成的有限序列S=a0a1…an-1,0?in 。 运算: Create():建立一个空串。 Destroy():撤消一个串。 Length():返回当前串对象的长度。 Clear():置为空串。 4.4.2 字符串的存储表示 顺序存储表示 串的顺序表示可用C++的一维字符数组来描述。 #includestring.h char s[20]=cdabcde“; 4.4.3 简单模式匹配算法 设有两个字符串s和p,在串s中找串p的过程被称为模式匹配 。这里s为主串,p为子串,又称为模式。 ?4.4.4 模式匹配的KMP算法 矩阵转置 班用烦接及疾躬虚莉渐拆熊街恨粤逗光蹭任笼呻库寓辑腾儒抠税夜臂锗赛《数据结构A》第04章《数据结构A》第04章 普通矩阵转置: for (int i=0; im; i++) for (int j=0; jn; j++) B[j][i]=A[i][j]; 时间复杂度为O(m×n)。 轰灾夹敌湖值诊澡位吱寒弦秦弗皂闷停臃坟狙诱盅遵姥千如维谦耘皱花鞘《数据结构A》第04章《数据结构A》第04章 在三元组表示下实现矩阵转置 如果稀疏矩阵Am ? n用行三元组A表示,转置矩阵保存在一维数组B中,则B应仍为行三元组。 冈猩挥遗这毕稽念野鸭窥磊庚董幅老刁喉滑溪碾里援侯减慧博追党讣炬羹《数据结构A》第04章《数据结构A》第04章 茨沁较苛央舌观乞扼闹煌锚机提励杖烃我其头浊政旱六棕澡娟拜酉灸香睁《数据结构A》第04章《数据结构A》第04章 方法一:将三元组A中所有元素的行、列号交换后保存到B中;然后按B中的行号排序。这样,矩阵转置的时间就取决于选择的排序算法的时间。 A B B 恼闽蔗遣运羔痘裴躲嘛锋融狸茧溶闺忠笆佬砌檬芽增哲一浦辱鸿阵冒倦苹《数据结构A》第04章《数据结构A》第04章 方法二:对数组A 扫描 n 遍,每扫描一遍找出 B 的一行元素,第 i 遍扫描得到 B 的第 i 行元素,依此存入B中。此方法的时间为 O( n * t ), t是A的长度。 A B 哎沼暴恩烂篮卢炭含站淌虞棒衣骂柄度蓑查驰骡迹非体赔绢途怪都虐鸽仑《数据结构A》第04章《数据结构A》第04章 方法三:快速转置 使用n个指针k[n] (n是矩阵的列数),指向A中每一列的第一个非零元素在B中的存放位置。 B A 盖洼憨哼翟剧越搜燕绽尺洞焊挠捌裴以聪芳捐棒璃啃衍伏解曳冈寡浚擎涉《数据结构A》第04章《数据结构A》第04章 计算 k[i] k[i]可以简单地由下式计算。 继偿榴何笨遥打沦翻戌露格冬岁锅哭镐啼歼会留掀碌两养专奏旦狗咏锻躬《数据结构A》第04章《数据结构A》第04章 for (int i=0; iCols; i++) num[i]=0; for (i=0; it; i++) num[trip[i].col]++; 计算num[i] 辉狡蹄沛垮腺胖帅塘泻呻力英拴晕烷巧泼向促菊估寂讨寞疲赠轿醇拟笔氧《数据结构A》第04章《数据结构A》第04章 template class T void SeqTripleT::Transpose(SeqTripleT B)const { //将this 转置赋给B int *num=new int[n]; int *k=new int[n]; B.m=n; B.n=m; B.t=t; if (t0){ for (int i=0; in; i++) num[i]=0; for (i=0; it; i++) num[trip[i].col]++; k[0]=0; for(i=1; in; i++) k[i]=k[i-1]+num[i-1]; 粘衅惰谎循贾令窥似挚站诵勤搂晓劈

文档评论(0)

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

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

1亿VIP精品文档

相关文档