一.字符串
1.字符串——零个或多个字
符组成的有限序列。 串长度:串中所包含的字符个数。
空串:长度为0的串,记为:" "。
非空串通常记为:S=" s1 s2 …… sn "
子串:串中任意个连续的字符组成的子序列。
主串:包含子串的串。
子串的位置:子串的第一个字符在主串中的序号
字符串的比较:通过组成串的字符之间的比较来进行。
2.字符串的存储结构
表示字符串的长度:方案1:用一个变量来表示串的实际长度。
方案2:在串尾存储一个不会在串中出现的特殊字符作为串的终结符,表示串的结尾。
方案3:用数组的0号单元存放串的长度,从1号单元开始存放串值。
3.朴素的模式匹配算法BF
int BF(char s[],char T[])
{
i=0;j=0;
while ((s[i]!='\0')&&(T[j]!='\0'))
{
if(s[i]==T[j]){i++;j++;}
else{i=i-j+1;j=0;}
}
if(T[j]=='\0') return (i-j+1);
else return 0;
}
二.数组的定义
1.数组是由一组类型相同的数据元素构成的有序集合,每个数据元素称为一个数组元素(简称为元素)
数组的特点:
Ø 元素本身可以具有某种结构,属于同一数据类型;
Ø 数组是一个具有固定格式和数量的数据集合。
2.数组的基本操作:存取和修改
常用的映射方法有两种:
Ø 按行优先:先行后列,先存储行号较小的元素,行号相同者先存储列号较小的元素。
Ø 按列优先:先列后行,先存储列号较小的元素,列号相同者先存储行号较小的元素。
Ø 3. 特殊矩阵:矩阵中很多值相同的元素并且它们的分布有一定的规律。
Ø 稀疏矩阵:矩阵中有很多零元素
Ø 压缩存储的基本思想是:
⑴ 为多个值相同的元素只分配一个存储空间;
⑵ 对零元素不分配存储空间。
三元组顺序表存储结构定义:
const int MaxTerm=100;
template <class DataType>
struct SparseMatrix
{
DataType data[MaxTerm]; //存储非零元素
int mu, nu, tu; //行数、列数、非零元个数
};