- 1、本文档共65页,可阅读全部内容。
- 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语言_第4章字符串、数组和特殊矩阵
KMP算法的具体实现如下:int kmp(seqstring t, seqstring p, int next[]) { int i,j; i=0; j=0; while (it.length jp.length) { if (j==-1||t.str[i]==p.str[j]) {i++; j++;} else j=next[j]; } if (j==p.length) return (i-p.length); else return(-1); } 4.3 数 组 4.3.1 数组和数组元素 数组是线性表的一种存储方式。其实,数组本身也可以看成是线性表的推广,数组的每个元素由一个值和一组下标确定,在数组中,对于每组有定义的下标都存在一个与之相对应的值;而线性表是有限结点的有序集合,若将其每个结点的序号看成下标,线性表就是一维数组(向量);当数组为多维数组时,其对应线性表中的每个元素又是一个数据结构而已。 例如,对于一个m?n的二维数组A[m][n]: a00 a01 a02………a0( n-1) a10 a11 a12………a1( n-1) A = ┋ ┋ ┋ ┋ ┋ ┋ ┋ ┋ a(m-1)0 a(m-1)1……… a(m-1)(n-1)当把二维数组看成是线性表时,它的每一个结点又是一个向量(一维数组)。例如,上述二维数组A可以看成是如下的线性表: (A0,A1,A2,……Am-1)即A中每一行成为线性表的一个元素,其中每个元素Ai(0≤i≤m-1)都是一个向量; (ai0 , ai1 , ai2…….ai(n-1) ) 当然,也可以将上述二维数组A看成如下的线性表: (A0’,A1’,A2’,……An-1’)即A中每一列成为线性表的一个元素,其中每一个元素Ai’(0≤i≤n-1)都是一个向量: (a0i , a1i , a2i,……a (m-1) i) 二维数组A中的每一个元素aij都同时属于两个向量,即:第i+1行的行向量和第j+1列的列向量,因此每个元素aij最多有两个前驱结点a(i-1) j和ai(j-1),也最多有两个后继结点a(i+1) j和ai(j+1)(只要这些结点存在);特别地,a00没有前驱结点,a(m-1) (n-1)没有后继结点,边界上的结点均只有一个后继结点或一个前驱结点。 对于m(m2)维数组,可以依据上述规律类推。 4.3.2 数组类的定义 ADT array { 数据对象D:具有相同类型的数据元素构成的有序集合; 数据关系R:对于n维数组,其每一个元素均位于n个向量中, 每个元素最多具有n个前驱结点和n个后继结点; 数组的基本操作如下: (1)Initarray (A, n, index1,index2, ……index n) (2)Destroyarray(A) (3)Value(A, index1,index2, ……index n, x) (4)Assign (A, e, index1,index2, ……index n) } ADT array 4.3.3 数组的顺序存储及实现 由于数组是由有限的元素构成的有序集合,数组的大小和元素之间的关系一经确定,就不再发生变化,因此数组均采用顺序存储结构实现,它要求一片连续的存储空间存储。 多维数组数据元素的顺序存储有两种方式: ? 按行优先存储 ? 按列优先存储 例如:对于二维数组A[m][n]: a00 a01 ……………a0( n-1) a10 a11 ……………a1( n-1) A = ┋ ┋ ┋ ┋ ┋ ┋ a(m-1)0 a(m-1)1……… a(m-1) (n-1)若将A按行优先存储,其存储顺序为:a00,a01,…… a0(n-1) , a10, a11,…….a1(n-1) ,……a(m-1)0,a(m-1)1,…… a(m-1) (n-1) ;而按列优先存储,其顺序为:a00,a10,…… a(m-1)0 , a01, a11,
文档评论(0)