串是零个或多个字符组成的有序序列
串长度是串中所包含的字符个数
空串指长度为零的串
主串是指包含子串的串
子串是指串中任意个连续的字符组成的子序列
顺序串:用数组来存储串中的字符序列
表示串的长度:
int BF(char S[ ], char T[ ])
{
i=0; j=0;
while (i<S.Length()&&j<T.length())
{
if (S[i]==T[j])
{i++;
j++;
}
else {
i=i-j+1; j=0;
}}
if (j>=T.length()) return (i-j);
else return -1;
}
KMP算法 (时间复杂度:O(m+n))
主串:在哪里失败在哪里开始
子串:从有开始最大滑动距离
多维数组:线性表中的数据元素可以是线性表,但所有元素的类型相同。
数组是由一组类型相同的数据元素构成的有序集合,每个元素受n(n≥1)个线性关系的约束,并称该数组为 n 维数组。
元素本身可以具有某种结构,属于同一数据类型;
数组是一个具有固定格式和数量的数据集合。 存取:给定一组下标,读出对应的数组元素;修改:给定一组下标,存储或修改与其相对应的数组元素。
存取和修改操作本质上只对应一种操作——寻址。
数组的储存结构:按行优先:先行后列,先存储行号较小的元素,行号相同者先存储列号较小的元素。
按列优先:先列后行,先存储列号较小的元素,列号相同者先存储行号较小的元素。
特殊矩阵:矩阵中很多值相同的元素并且它们的分布有一定的规律。
稀疏矩阵:矩阵中有很多零元素。
十字链表结点类的定义
template<class T>
class OLNode
{
public:
int row,col;
T element;
OLNode<T>* right,*down;
public:
OLNode(){right=NULL;down=NULL;};
};
广义表: n ( ³ 0 )个表元素组成的有限序列,记作:
LS = (a0, a1, a2, …, an-1)
LS是表名,ai是表元素,它可以是表 (称为子表),可以是数据元素(称为原子)。
n为表的长度。n = 0 的广义表为空表。
长度:广义表LS中的直接元素的个数;
深度:广义表LS中括号的最大嵌套层数。算括号数量
广义表的成分可以是单元素,也可以是有结构的表
线性表是一种特殊的广义表
广义表不一定是线性表,也不一定是线性结构
表头:广义表LS非空时,称第一个元素为LS的表头;
表尾:广义表LS中除表头外其余元素组成的广义表(一定是子表或空)