扫码加入训练营

牢记核心词

学习得礼盒

计算机考研:数据结构常用算法精析(4)

2013-12-10 15:48:15来源:新东方在线编辑

  因为 next[ ] 在匹配过程中,若T[ j ]=T[ next[j] ];那么当 S[i]不等于T[j],

  S[ i]肯定也不等于T[k= next[j] ];

  所以 S[i]应直接与T[next[k]]比较,而我们通过将next[j]修正

  为nextval[j]=next[next[j]];这样能使比较更少。

  Void get_nextval(Sstring T,int nextval[])

  {

  i=1; nextval[1]=0; j=0;

  while(i

  {

  if(j=0 || T[i]= T[j])

  {

  ++i;

  ++j;

  if(T[i]!=T[j])

  nextval[i]=j;

  else

  nextval[i]=next[j];

  }

  else

  j=nextval[j];

  }

  空格串是指__由空格字符(ASCII值32)所组成的字符串,其长度等于 空格个数____。

  在模试匹配KMP算法中所用失败函数f的定义中,为何要求p1p2……pf(j)为p1p2……pj两头匹配的真子串?且为最大真子串?

  失败函数(即next)的值只取决于模式串自身,若第j个字符与主串第i个字符失配时,主串不回溯, 模式串用第k(即next[j])个字符与第i个相比,有‘p1…pk-1’=‘pj-k+1…pj-1’,为了不因模式串右移与主串第i个字符比较而丢失可能的匹配,对于上式中存在的多个k值,应取其中最大的一个。这样,因j-k最小,即模式串向右滑动的位数最小,避免因右移造成的可能匹配的丢失。

  第4章节有关数据结构算法,上文中为大家作了分析,希望考生对于这些算法能够熟记于心,方便考试的应用和日后的实际操作,预祝大家都能够取得好成绩,加油!



考研公开课小程序

本文关键字: 计算机 考研 数据结构

考研英语核心词汇营

背词+听课+练习+督学,学习得礼盒

更多资料
更多>>
更多内容

关注新东方在线考研服务号

获得21考研真题及答案解析

1. 打开手机微信【扫一扫】,识别上方二维码;
2.点击【关注公众号】,获取资料大礼包。

考研资料大礼包
近10年考研真题及答案免费下载
更多>>
更多公开课>>
更多>>
更多资料