字符串:
字符串是零个或多个字符组成的有限序列,只包含空格的串称为空格串。串中所包含的字符个数称为串的长度,长度为0的串称为空串。
S是串名,双引号是界定符,不属于串的内容,双引号括起来的部分是串值。
字符串中任意个连续的字符组成的子序列称为该串的子串,包含子串的串称为主串,子串的第一个字符在主串中的序号称为子串在主串的位置。
字符的比较是通过组成串的字符之间的比较来进行。例如S1=ab12cd;S2=ab12;S3=ab13;S2<S1<S3
给定两个字符串s和t,在主串s中寻找子串t的过程称为模式匹配,t称为模式。
其中在匹配成功的情况下有两种极端情况:
1、在最好的情况下,每趟不成功的匹配都发生在模式t的第一个字符。
2、在最坏的情况下,每趟不成功的匹配都发生在模式t的最后一个字符。
注:一般情况下,m《n,因此最坏情况下的时间复杂度是o(n*m)
模式匹配算法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;
}
多维数组:
数组是由类型相同的数据元素构成的有序集合,每一个数据元素称为一个数组元素。
数组作为一种数据结构,其特点是数据元素本身可以具有某种结构,但属于同一数据类型。
注:在数组上一般不能执行插入或删除某个数组元素的操作。
对于n(n>2)维数组,一般采用按行优先和按列优先两种存储方法。
数组有两种存储的基本思想:先行后列、先列后行
在矩阵中有很多值相同的元素并且它们的分布有一定的规律称为特殊矩阵,或者矩阵中有很多零元素称为稀疏矩阵。
压缩存储的基本思想:1、为多个值相同的元素只分配一个存储空间;2、对零元素不分配存储空间