pos=1,最好的情况就是一开始就找到了,比较了m次,最差的情况就是最后比较出来的,主串前面n-m个位置都部分匹配到子串的最后一位,即n-m位各比较了m次,最后还有一次,也就是成功的这一次,最后m位比较了一次,所以总次数为(n-m)*m+m=(n-m+1)*m次,若m<<n,那么最坏情况下算法的复杂度为O(n*m)。
所以继续前移到next[next[j]]的位置,继续和第j位相比直到不等为止。 4.2 数组 数组:按一定格式排列起来的具有相同类型的数据元素的集合(一般用顺序结构) int num[5]={1,2,3,4,5}; int num[5][8];//五行八列的数组 特殊矩阵的压缩存储 链式存储稀疏矩阵——十字链表: 4.3广义表 广义表(又称列表Lists)...
声明时,int num[m][n],m行×n列;或者先定义一个n列的一维数组,再对这个一维数组的每个元素定义为m行,也可以获得。 2,数组的抽象数据类型定义 ji为第i维的下标,D中是数组的任意一个元素。 3,数组的顺序存储 数组结构固定(维数和和维届不变)且一般不做插入删除,故采用顺序结构。注意数组多维映射到数据一维...
#define MAXLEN 255class SString{char ch[MAXLEN+1]; //存储串的一维数组int length; //串的当前长度}; 串的链式存储结构 在进行串的链式存储时,可以多个字符放在一个结点中,克服链式存储存储密度低的缺点。 #define CHUNKSIZE 80class Chunk{//块链中的块定义char ch[CHUNKSIZE];Chunk *next;};class LSt...
所以,字符串 “abcabac” 对应的 next 数组中的值为(0,1,1,1,2,3,2)。 具体的算法如下: 模式串T为(下标从1开始):“abcabac” next数组(下标从1开始): 01 第三个字符 ‘c’ :由于前一个字符 ‘b’ 的 next 值为 1 ,取 T[1] = ‘a’ 和‘b’ 相比较,不相等,继续;由于 next[1] = 0...
总结: -串、数组和广义表都是常见的数据结构,用于存储和操作数据。 -串是字符的有限序列,可以通过数组或链表来实现。 -数组是一维线性数据结构,存储相同类型的数据,具有常数时间复杂度的访问操作。 -广义表是由元素组成的有序集合,可以通过链表来实现,能够表示任意层次的嵌套结构。©...
第四章 串,数值和广义表 4.1 串的定义 串(字符串)是由零个或多个字符组成的有序序列,一般记为 s="a1a2...an" 其中,s是串的名,用双引号括起来的字符序列是串的值;ai(1<=i<=n)可以是字母或其他字符;串中字符的数目n称为串的长度。零个字符的串称为空串,其长度为零。
第4章串、数组和广义表 教学内容 4.1串4.2数组 4.3广义表 第2页,此课件共59页哦 22002222年年22月月2200日日 教学目标 1.了掌握解串串的的存存储储方方法法,,理理解解串的串两的种两模种式模匹式配匹算配法算;2.法明,确重数点组和掌广握义BF表算这法两。种数据结构的特点,掌握 2.明数确组数...
串的顺序存储结构:元素的逻辑关系直接映射到存储位置,由逻辑关系的先后直接影响到存储位置的先后。 // 伪代码实现#defineMAXLEN 255typedefstruct{charch[MAXLEN+1];// 存储串的一维数组(下标为0~255)intlength;// 串的当前长度}SString// 将定义的串声明成SString这个名字 ...
4.数组的定义 5.数组的顺序表示和实现 6.矩阵的压缩存储(即数组的应用) 7.广义表的定义 8.广义表的存储结构 二.练习题 一.课本知识点 1.串类型的定义 串:零个多个特殊线性表 串长 空白串空格符 字符位置: 串相等 子串连续的字符 主串 子串的位置第一个字符 串的基本操作: 代码语言:javascript 复制...