串主要学习了BF算法和KMP算法。
BF算法优点:思想简单,直接,缺点:每次字符不匹配时,都要回溯到开始位置,时间开销大。时间复杂度 O((n-m+1)*m) 。
KMP算法定义了一个next[ ]数组储存回溯位置,在模式匹配的进程中,当主串和子串中第几号元素不匹配的时候,next[ ]指示子串与母串的第几号元素再匹配,避免了不必要的回溯。
多维数组可以看成是线性表的推广,其特点是结构中的元素本身可以是具有某种结构的数据,但属于同数据类型。
数组一般采用顺序存储结构,故存储多维数组时,应先将其确定转换为一维结构,有按“行”转换和按“列”转换两种。
矩阵通常用二维数组来表示,为了节省存储空间,对于几种常见形式的特殊矩阵,比如对称矩阵、三角矩阵和对角矩阵,即存储时可进行压缩存储,即为多个值相同的元只分配一个存储空间,对零元不分配空间。
广义表是另外一种线性表的推广形式,表中的元素可以是称为原子的单个元素,也可以是一个子表。
广义表的结构相当灵活,在某种前提下,它可以兼容线性表、数组、树和有向图等各种常用的数据结构。
广义表的常用操作有取表头和取表尾。广义表通常采用链式存储结构:头尾链表的存储结构和扩展线性链表的存储结构。
原文:https://www.cnblogs.com/jinxiyuan/p/12833691.html