91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

WM(Wu-Manber)算法詳解及C語言實現(xiàn)程序代碼解析參考 可直接運行。

資源截圖

代碼片段和文件信息

#include?“wm.h“

#include?
#include?
#include?
#include?

extern?int?nline=1;
extern?int?nfound=0;
#define?MAXN?10001?//模式串的最大長度MAXN?-?1
#define?MAXM?51//單詞最大長度為MAXM?-?1

/*?****************************************************************
????函數(shù):void?wmNew()
目的:創(chuàng)建一個模式串集合
參數(shù):

????返回:
????WM_STRUCT?-?創(chuàng)建的模式串集
?****************************************************************/
WM_STRUCT?*?wmNew()
{
WM_STRUCT?*p=(WM_STRUCT?*)malloc(sizeof(WM_STRUCT));
if(!p)?return?0;
p->msNumPatterns=0;//模式串的個數(shù)初始為0
p->msSmallest=1000;//最短模式串的長度
return?p;
}

/*?****************************************************************
????函數(shù):void?wmFree(WM_STRUCT?*)
目的:釋放模式串集占用空間
參數(shù):
ps?=>?模式串集
????返回:
????
?****************************************************************/
void?wmFree(WM_STRUCT?*ps)?//釋放空間函數(shù)
{
if(ps->msPatArray)?//如果模式串集中存在子串,則先釋放子串?dāng)?shù)組占用空間
{
if(ps->msPatArray->psPat)?free(ps->msPatArray->psPat); //子串不為空,則釋放
free(ps->msPatArray?);
}
if(ps->msNumArray)?free(ps->msNumArray);
if(ps->msHash)?free(ps->msHash);
if(ps->msPrefix)?free(ps->msPrefix);
if(ps->msShift)?free(ps->msShift);
free(ps);
}

/*?****************************************************************
????函數(shù):int?wmAddPattern(WM_STRUCT?*unsigned?char?*int?)
目的:向模式串集ps中新增一個長度為m的子串q
參數(shù):
ps?=>?模式串集
q?=>?要新增的子串
m?=>?子串長度
????返回:
????int*?-?新增成功0,失敗-1
?****************************************************************/
int?wmAddPattern(WM_STRUCT?*psunsigned?char?*qint?m)
{
WM_PATTERN_STRUCT?*p;??//定義一個子串結(jié)構(gòu)
p=(WM_PATTERN_STRUCT?*)malloc(sizeof(WM_PATTERN_STRUCT));
if(!p)?return?-1;

p->psPat=(unsigned?char*)malloc(m+1);?//據(jù)子串?dāng)?shù)組的長度分配空間
memset(p->psPat+m01); //最后一個位置設(shè)置為結(jié)束字符“/0”?
memcpy(p->psPatqm);?//拷貝q到子串結(jié)構(gòu)數(shù)組中
p->psLen=m;?//子串長度賦值
ps->msNumPatterns++;?//模式串集的子串個數(shù)增1
if(p->psLen?msSmallest)?ps->msSmallest?=?p->psLen;?//重新確定最短字符串長度

p->next=ps->plist;?//將新增子串加入字符串集列表中。隊列形式,新增在隊列頭部
ps->plist=p;

return?0;
}

/*?****************************************************************
????函數(shù):static?unsigned?HASH16(unsigned?char?*)
目的:對一串字符進行哈希計算。計算方式為:(((*T)<<8)?|?*(T+1)),
參數(shù):
T?=>?要哈希計算的字符串
????返回:
????unsigned?-?靜態(tài)函數(shù),返回對字符串T計算的哈希值
?****************************************************************/
static?unsigned?HASH16(unsigned?char?*T)
{
/*/
printf(“T:%c\n“*(T));
getchar();
printf(“T+1:%c\n“*(T+1));
getchar();
printf(“T<<8:%c\n“(int)((*T)<<8));
getchar();
printf(“HASH16:%d\n“((*T)<<8)?|?*(T+1));
getchar();
//*/
return?(unsigned?short)?(((*T)<<8)?|?*(T+1));?//對第一個字符左移8位,然后與第二個字符異或運算
}

/*?****************************************************************
????函數(shù):sort(WM_STRUCT?*)
目的:對字符串集ps中的子串隊列,根據(jù)子串串值的哈希值從小到大排序
參數(shù):
ps?=>?模式串集
????返回:無
?****************************************************************/
void?sort(WM_STRUCT?*ps)
{
int?m=ps->msSmallest;?//獲取最短子串長度
int?ij;
unsigned?char?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????10697??2011-01-17?10:52??wm.c

?????文件???????1403??2011-01-17?10:45??wm.h

?????文件????????263??2011-01-17?13:16??WM(Wu-Manber)算法詳解及C語言實現(xiàn)程序代碼解析參考?-?志文工作室?-?計算機技術(shù)學(xué)習(xí)博客.url

-----------?---------??----------?-----??----

????????????????12363????????????????????3


評論

共有 條評論