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

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

  switch (n)

  {

  case (-1)://分裂节点,父分裂点为point->breakpoint

  tempuse =point->strdata;

  cnode=(mynode) new node;

  if (point->Child.size() !=0)

  {

  cnode->Child =point->Child;

  }

  cnode->flag =point->flag;

  point->Child.erase(point->Child.begin(),point->Child.end());

  point->strdata.erase(point->strdata.begin(),point->strdata.end());

  for (h = 0; h<(point->breakpoint); h++)

  {

  point->strdata.insert(point->strdata.end(),tempuse[h]);

  }

  for (h =(point->breakpoint); h

  {

  cnode->strdata.insert(cnode->strdata.end(), tempuse[h]);

  }

  point->Child.push_back(cnode);

  cnode = (mynode) new node;

  cnode->strdata = left;

  cnode->flag = 0;

  point->Child.push_back(cnode);

  point->flag = 1;

  break;

  case (0)://do nothing

  break;

  case (1)://在叶节点point处追加left字符串

  point->strdata =point->strdata+left;

  break;

  case (2)://在父节点point下添加子节点cnode

  cnode = (mynode) new node;

  cnode->strdata = left;

  cnode->flag = 0;

  point->Child.push_back(cnode);

  point->flag = 1;

  break;

  }

  }

  }

  }

  //返回1: 则在指针point所指向的节点的strdata后追加 left字符串

  //返回2: 则生成point所指向的节点的子节点,子节点的strdata值为left字符串

  //返回0: 则donothing

  //返回-1:则分裂节点将分裂点写入point指针所指向的 节点的breakpoint,并将目标字符串的剩余字符串写入left

  intCSuffixTree::Search(string str)

  {

  stack s;

  int i, n = 0;

  mynode child;

  char target;

  point = ST; //初始搜索位置为根

  child = NULL;

  for (i = (str.length()-1); i >= 0; i--)//将目标字符串str压栈

  {

  s.push(str[i]);

  }

  while(!s.empty())//直到搜索完str串

  {

  //寻找point所指向的节点下与str首字母相同的子节点

  for (i = 0; i <=(point->Child.size()-1); i++)

  {

  if(point->Child[i]->strdata[0] == s.top())

  {

  child =point->Child[i]; //child指针指向与str具有相同首字母的节点

  break;

  }

  }

视频学习

我考网版权与免责声明

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

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

最近更新

社区交流

考试问答