一个针对字符串的散列函数--《编程珠玑》读书笔记

  #define NHASH 29989  //根据自己的实际需要来设置
  #define MULT 31

  unsigned int hash(char* p)
  {
      unsigned int h = 0;
      for ( ; *p; p++)
      {
          h = MULT * h + *p;
      }
      return h % NHASH;
  }

本来我以为其中的31是为了将一个字符串,比如abc当做一个31进制的数字来看,但是考虑到26个英文字母再加上大写的情况,就是52个,跟31不沾边啊。

留待思考!

posted on 2012-04-11 11:21  aho  阅读(267)  评论(0编辑  收藏  举报

导航