首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

这个函数实现的是什么功能?解决办法

2012-03-26 
这个函数实现的是什么功能?char *constmap(cm,s,len)struct constmap *cmchar *sint len{constmap_hash

这个函数实现的是什么功能?
char *constmap(cm,s,len)
struct constmap *cm;
char *s;
int len;
{
  constmap_hash h;
  int pos;
  h = hash(s,len);
  pos = cm->first[h & cm->mask];
  while (pos != -1) {
  if (h == cm->hash[pos])
  if (len == cm->inputlen[pos])
  if (!case_diffb(cm->input[pos],len,s))
return cm->input[pos] + cm->inputlen[pos] + 1;
  pos = cm->next[pos];
  }
  return 0;
}

其实不能理解的原因是不明白constmap这个结构体成员的主要作用

[解决办法]
struct constmap结果应该是全局的什么总统描叙..可以贴贴结构源码大家可以分析下

函数大概意思
首先根据字符串s及其长度,通过hash函数返回混码的结果赋值给混码类型的变量h,混码类型(constmap_hash估计是个无符号整形之类的);
再通过混码h与结构cm的对象掩码mask位与得到的其对象first数字的下表,并去数组值给pos,
循环的意思是如果h与结构cm的对象hash[pos](注:混码数表)相等且len也与cm的对象inputlen[pos],(注:输入长度)那么再通过case_diffb函数比较查到的结构cm输入input表的位置与函数参数s和len,进行比较,如果相同返回再cm结构里查到pos的位置的input值加上inputlen其位置的值再加1,否则继续下查直到pos返回为-1退出,返回0

热点排行