数据结构第四章学习小结

第四章主要学习了串与数组,至于广义表,只是粗略的看了一下。与线性表类似, 串也有两种基本存储结构:顺序存储和链式存储。串的基本运算有串连接、两串相等判断、取子串、插入子串、删除子串、子串定位、子串替换等。其中,子串的定位运算通常称为串的模式匹配或串匹配。

1. BF 算法
/ /两个串均未比较到串尾时
while (i < =S. length && j < =T. length)

//接下来就是匹配的过程

if(S[i]==T[j]){
        i++;j++;
        }//若匹配则继续比较下一位
else{
        pos++;
        i=pos;
        j=0;
        }//若不匹配则i回溯到之前比较的首位的下一位,j回溯到首位 

BF 算法的匹配过程易千理解,思路直观简明。但当匹配失败时,主串指针需要回溯,模式串的指针总是恢复到首字符位置,因此算法时间复杂度高。
2. KMP算法
对比BF算法:每当一趟匹配过程中出现字符比较不等时,不需回溯l指针,而是利用已经得到的 ”部分匹配" 的结果将模式向右 "滑动“ 尽可能远的一段距离后,继续进行比较。

数组:由于数组一般不插入和删除,所以采用顺序存储结构表示数组比较合适。二维数组有两种存储方式:一种是以列序为主序的存储方式;一种是以行序为主序的存储方式。
数组是一种随机存取结构,使用数组存储的数据,可以通过其规律性,由下标计算其存储位置。同时,用二维数组可以表示一些特殊矩阵,如对称矩阵、三角矩阵、对角矩阵及稀疏矩阵。
 
一开始打代码还是有点懵,然后看了几遍书以及慕课上的视频,才逐渐找到感觉。在实现代码的时候,比较粗心,经常会忘一些细节,导致进度缓慢。
下一章是树与二叉树,就在现有的基础上继续学习,努力提高速度。
 
posted @ 2020-05-05 21:50  黄颖芳  阅读(174)  评论(0编辑  收藏  举报