串(String)----零个或多个任意字符组成的有限序列
子串:一个串中任意个连续字符组成的子序列(含空串)称为该串的子串。
真子串是指不包含自身的所有子串。
字符位置:字符在序列中的序号为该字符在串中的位置
子串位置:子串第一个字符在主串中的位置
空格串:由一个或多个空格组成的串,与空串不同
串相等:当且仅当两个串的长度相等并且各个对应位置上的字符都相同时,这两个串才是相等的。
串的顺序存储结构
串的链式存储结构
串的模式匹配算法:确定主串中所含子串(模式串)第一次出现的位置 (定位)
Brute-Force简称为BF算法,亦称简单匹配算法。采用穷举法的思路。
算法实现
KML
箭头左边的模式串和主串相互匹配,且模式串有两个相等的子串,称为公共前后缀,
直接移动模式串,使之前的前缀移到后缀的位置。 如果模式串有多个公共前后缀,则选择最长的那一对
数组
数组:按一定格式排列起来的具有相同类型的数据元素的集合。
n维数组:若 n-1 维数组中的元素又是一个一维数组结构,则称作 n维数组。
特殊矩阵的压缩存储
不适宜常规存储的矩阵:值相同的元素很多且呈某种规律分布;零元素多。
矩阵的压缩存储:为多个相同的非零元素只分配一个存储空间;对零元素不分配空间。
对称矩阵的压缩存储
对称矩阵上下三角中的元素数均为:
n(n+ 1)/2
可以以行序为主序将元素存放在一个一维数组 SA[n(n+1)/2]中。
其中元素SAn1的下标为n(n-1)/2
三角矩阵
对角矩阵
稀疏矩阵
广义表
广义表(又称列表 Lists)是n>=0 个元素 ao, a.. .... an-1的有限序列,其中每一个ai或者是原子,或者是一个广义表。
广义表通常记作:LS
其中:LS为表名,n为表的长度,每一个 ai为表的元素。
· 习惯上,一般用大写字母表示广义表,小写字母表示原子。
表头:若 LS非空,则其第一个元素 a 1就是表头。
记作 head(LS) = a1注:表头可以是原子,也可以是子表。
表尾; 除表头之外的其它元素组成的表。记作 tail(L)
注:表尾不是最后一个元素,而是一个子表。
广义表的长度定义为最外层所包含元素的个数;
广义表的深度定义为该广义表展开后所含括号的重数;