在第四章里,我们学习了字符串和多维数组。字符串是个或多个字符组成的有限序列。其操作主要有:赋值操作、判断操作、求长度、求子串、定位、替换、插入、删除。空白串:指串中包含一个或多个空格字符的串。串是特殊的线性表(结点是字符),所以串的存储结构与线性表的存储结构类似。串的顺序存储结构简称为顺序串: 顺序串又可按存储分配的不同分为:静态存储分配:直接用定长的字符数组来定义。优点是涉及串长的操作速度快,但不适合插入、链接操作。动态存储分配:是在定义串时不分配存储空间,需要使用时按所需串的长度分配存储单元。串的链式存储就是用单链表的方式存储串值,串的这种链式存储结构简称为链串。链串与单链表的差异只是它的结点数据域为单个字符。顺序串上子串定位的运算:又称串的“模式匹配”或“串匹配”,是在主串中查找出子串出现的位置。
多维数组:数组一般用顺序存储的方式表示。存储的方式有:1.行优先顺序,也就是把数组逐行依次排列。2.列优先顺序,就是把数组逐列依次排列。 地址的计算方法:按行优先顺序排列的数组:LOCa(ij)=LOCa(11)+((i-1)*n+(j-1))*d.。按列优先顺序排列的数组:LOCa(ij)=LOCa(11)+((j-1)*n+(i-1))*d. 矩阵的压缩存储:为多个相同的非零元素分配一个存储空间;对零元素不分配空间。特殊矩阵的概念:所谓特殊矩阵是指非零元素或零元素分布有一定规律的矩阵。稀疏矩阵的概念:一个矩阵中若其非零元素的个数远远小于零元素的元素总个数,则该矩阵称为稀疏矩阵。特殊矩阵的类型:①对称矩阵:满足a(ij)=a(ji)。②三角矩阵:上三角阵:k=i*(2n-i+1)/2+j-i,LOCa(ij)=LOC(sa[0])+k*d. ③ 下三角LOCa(ij)=LOC(sa[0])+k*d. ④ 对角矩阵。稀疏矩阵的压缩存储方式用三元组表把非零元素的值和它所在的行号列号做为一个结点存放在一起,用这些结点组成的一个线性表来表示。但这种压缩存储方式将失去随机存储功能。加入行表记录每行的非零元素在三元组表中的 起始位置,即带行表的三元组表。