第四章学习小结

这一章主要学习了串的定义、存储和模式匹配算法、数组的存储、特殊矩阵的压缩存储、以及广义表的定义和存储。

其中串的模式匹配是一个难点,BF算法很好理解,就是上学期用的逐个匹配,但是KMP算法有点难理解,还不是很懂

 1 int Index_KMP(SString S,SString T,int pos)
 2 {//利用模式串 T 的 next 函数求 T 在主串 S 中第 pos 个字符之后的位置
 3 //其中,T非空, 1<=pos<=s.length
 4   i=pos;j=1;
 5   while (i<=S.length && j<=S.length)
 6   {//两个串均未比较到串尾
 7       if ( j==0 || s[i] ==T[j] ) { ++i; ++j; }//继续比较后继字符
 8       else j=next[j];//模式串向右移动
 9   }
10   if (j>T[0]) return i-T[0] ;//匹配成功
11   else return 0;//匹配失败
12 }
 1 void get_next(SString T,int next[]) 
 2 {//求模式串 T的 next 函数值并存入数组 next
 3   i=1;
 4   next[1]=0;
 5   j=0;
 6   while(i<T[0])
 7   {
 8       if(j==0 || T[i]==T[j]) {++i; ++j; next[i]=j; }
 9       else j = next[j];
10   }
11 }

 

数组的学习和之前差不多,主要是增加了特殊数组的压缩存储,还挺有意思的

 

还有新接触的广义表,分为头尾链表的存储结构和扩展线性链表的存储结构,也挺复杂的

这一章的内容虽然不多但是都不太好理解,还有一些地方没弄懂,接下来会继续看书和复习慕课视频帮助理解

 

posted @ 2020-05-05 11:30  1907陈航  阅读(162)  评论(0编辑  收藏  举报