2011年软考程序员考试复习笔试知识点整理(17)

来源:软件水平考试    发布时间:2012-11-05    软件水平考试视频    评论

  if (child == NULL)//父节点point下没有首字母相同的子节点

  { //将str中剩余的字符串保存在left中

  left.erase(left.begin(),left.end());

  while(!s.empty())

  {

  left.insert(left.end(),s.top());

  s.pop();

  }

  return (2);

  }

  target = s.top(); //

  s.pop();

  if (1)

  {

  //child节点下的每个字符与str中的字符顺序比较

  for (i = 0; i <=(child->strdata.length()-1); i++)

  {

  if (child->strdata[i] ==target)

  {

  if (!s.empty())

  {

  target = s.top();

  s.pop();

  continue;

  }

  else return(0); //若str中的字符串先于strdata中的字符串完成比较,则说明该字符 //串已经包含在树中

  }

  else //比较中出现不同,需要分裂节点

  {

  point = child; //point指向要分裂的节点

  left.erase(left.begin(),left.end()); //将str中剩余的字符串写入left

  s.push(target);

  while(!s.empty())

  {

  left.insert(left.end(),s.top());

  s.pop();

  }

  point->breakpoint =i; //写入父节点point的分裂点

  return (-1); //分裂节点

  }

  }

  point = child; //走出循环则进行下一个节点的搜索

  if (!point->flag)//判断刚刚搜索的是否为叶节点,若是则停止搜索

  {

  left.erase(left.begin(),left.end());

  s.push(target);

  while(!s.empty())

  {

  left.insert(left.end(),s.top());

  s.pop();

  }

  return (1);

  }

  s.push(target);

  child = NULL;

  }

  }

  //字符串str搜索完成,仍没有到达叶节点,返回0

  return(0);

  }

  voidCSuffixTree::Show(mynode m_pSTreeRoot)

  {

  vector bIsEnd;

  bIsEnd.push_back(0);

  cout << "Root" << endl;

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答