内容小结
一、字符串
1.定义
字符串是零个或多个组成的有限序列,只包含空格的串成为空格串。串中所包含的字符个数成为串的长度,长度为0的串为空串,记作“”,一个非空串通常该记作: S=“s1,s2…sn”
字符串中任意个连续的字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串,子串的第一个字符在主串的序号成为子串在主串的位置。
2.模式匹配
①BF算法和KMP算法:
BF算法简单但效率较低,一种对BF算法做了很大改进的模式匹配算法是KMP算法,其基本思想是主串不进行回溯,KMP算法的时间复杂度是O(n+m)。
二、数组
1、定义
数组是由类型相同的数据元素构成的有序集合,每个数据元素称为一个数组元素,每个元素受n(n≥1)个线性关系的约束,每个元素在n个线性关系中的序号i1,i2,…,in称为该元素的下标,并称该数组为n维数组。
2、 数组的存储结构与存址
数组是一种特殊的数据结构,一般要求能够随机存取,因此,数据采用顺序存储结构。由于内存单元是一维结构,而多维数组是多维结构,所以,采用顺序存储结构存储数组首先需要将多维结构映射到一维结构。(顺序存储略一下啦)
【矩阵的压缩存储】
在实际应用中,经常出现一些阶数很高的矩阵,同时在矩阵中有很多值相同的元素并且他们的分布有一定的规律——称为特殊矩阵,或者矩阵中与很多零元素——称为稀疏矩阵。
压缩存储的基本思想:为多个值相同的元素只分配一个存储空间;对零元素不分配存储空间。
①对称矩阵的压缩存储
对称矩阵关于主对角线对称,因此只需存储下三角部分即可。原来需要n*n个存储单元,现在只需n*(n+1)/2个存储单元。
②三角矩阵的压缩存储
下三角矩阵的压缩存储与对称矩阵类似,不同之处仅在于存储下三角中的元素以外,还要存储对角线上方的常数。因为是同一个常数,所以只存储一个即可。共存储n*(n+1)/2+1个元素。
③对角矩阵的压缩存储
对角矩阵也称为带状矩阵。在对角矩阵中,所有非零元素都集中在以主对角线为中心的带状区域,除了主对角线和他的上下若干条主对角线的元素外,所有其他元素都为零。
④稀疏矩阵的压缩存储
将稀疏矩阵的非零元素对应的三元组成所构成的集合,按行优先的顺序排列成一个线性表,称为三元组表,则稀疏矩阵的压缩存储转化为三元组表的存储。
三元组顺序表:采用顺序存储结构存储的三元组表称为三元组顺序表。显然,要唯一表示一个稀疏矩阵,还需要在存储三元表的同时存储该矩阵的行数、列数和非零元素的个数,
十字链表:稀疏矩阵的链接存储结构称为十字链表。它具备存储结构的特点,因此,在非零元素的个数及位置都会发生变化的情况下,通常采用十字链表存储稀疏矩阵,其将每个非零元素对应的三元组 存储为一个链接表结点,节点由5个域组成。
三、广义表(不做要求)
广义表是另外一种线性表的推广形式,表中的元素可以是称为原子的单个元素,也 可以是一个子表,所以线性表可以看成广义表的特例。广义表的结构相当灵活,在某种前提 下,它可以兼容线性表、数组、树和有向图等各种常用的数据结构。广义表的常用操作有取 表头和取表尾。广义表通常采用链式存储结构:头尾链表的存储结构和扩展线性链表的存储 结构。
完成作业或实践时的心得体会
这次作业和实践可以说是对课程上学习的一个补充了!特别是作业题部分的选择题填补了我的好多漏洞,将上次回答讨论的题目进行了一个举一反三。
值得向大家分享的资料?每一项推荐都请说明推荐理由及列出相关链接(或书目名称,具体页码)
(大家都有的)晓梅老师在群里转发的对于String的一个pdf文档。之外的参考资料当然是神奇的互联网。
上一阶段的目标完成情况,接下来的目标
上次说了要多花点时间落实到书本提及的实例,可是现在课外任务ddl边缘,仍然没有完成得很好!接下来,目标仍然是不“泛”而注重细节。