资源简介
该代码是WM算法和示例,感兴趣的小伙伴可以下载研究一下

代码片段和文件信息
/*
* WM.cpp
*
* Created on: 2010-2-20
* Author: qingxuan.chenqx
*/
#include
#include
#include
#include
#include “wm.h“
extern int nline = 1;
extern int nfound = 0;
#define MAXN 10001 //模式串的最大长度MAXN - 1
#define MAXM 51//单词最大长度为MAXM - 1
WM_STRUCT * wmNew()
{
WM_STRUCT *p = (WM_STRUCT *) malloc(sizeof(WM_STRUCT));
if (!p)
return 0;
p->msNumPatterns = 0;
p->msSmallest = 1000;
return p;
}
void wmFree(WM_STRUCT *ps)
{
if (ps->msPatArray)
{
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);
}
int wmAddPattern(WM_STRUCT *ps unsigned char *q int m)//m字符串长度
{
WM_PATTERN_STRUCT *p;
p = (WM_PATTERN_STRUCT *) malloc(sizeof(WM_PATTERN_STRUCT));
if (!p)
return -1;
p->psPat = (unsigned char*) malloc(m + 1);
memset(p->psPat + m 0 1);
memcpy(p->psPat q m);
p->psLen = m;
ps->msNumPatterns++;
if (p->psLen < (unsigned) ps->msSmallest)
ps->msSmallest = p->psLen;
p->next = ps->plist;
ps->plist = p;
return 0;
}
static unsigned HASH16(unsigned char *T)
{
return (unsigned short) (((*T) << 8) | *(T + 1));
}
void sort(WM_STRUCT *ps)//字符串哈希值从小到大排列
{
int m = ps->msSmallest;
int i j;
unsigned char *temp;
int flag;
for (i = ps->msNumPatterns - 1 flag = 1; i > 0 && flag; i--)
{
flag = 0;
for (j = 0; j < i; j++)
{
if (HASH16(&(ps->msPatArray[j + 1].psPat[m - 2])) < HASH16(
&(ps->msPatArray[j].psPat[m - 2])))
{
flag = 1;
temp = ps->msPatArray[j + 1].psPat;
ps->msPatArray[j + 1].psPat = ps->msPatArray[j].psPat;
ps->msPatArray[j].psPat = temp;
}
}
}
}
static void wmPrepHashedPatternGroups(WM_STRUCT *ps)//计算有多少个不同哈希值,且从小到大
{
unsigned sindex hindex ningroup;
int i;
int m = ps->msSmallest;
ps->msNumHashEntries = HASHTABLESIZE;
ps->msHash = (HASH_TYPE*) malloc(sizeof(HASH_TYPE) * ps->msNumHashEntries);
if (!ps->msHash)
{
printf(“No memory in wmPrepHashedPatternGroups()\n“);
return;
}
for (i = 0; i < (int) ps->msNumHashEntries; i++)
{
ps->msHash[i] = (HASH_TYPE) -1;
}
for (i = 0; i < ps->msNumPatterns; i++)
{
hindex = HASH16(&ps->msPatArray[i].psPat[m - 2]);
sindex = ps->msHash[hindex] = i;
ningroup = 1;
while ((++i < ps->msNumPatterns) && (hindex == HASH16(
&ps->msPatArray[i].psPat[m - 2])))
ningroup++;
ps->msNumArray[sindex] = ningroup;
i--;
}
}
static void wmPrepShiftTable(WM_STRUCT *ps)//建立shift表
{
int i;
unsigned short m k cindex;
unsigned shift;
m = (unsigned short) ps->msSmallest;
ps->msShift = (unsigned char*) malloc(SHIFTTABLESIZE * sizeof(char));
if (!ps->msShift)
return;
for (i = 0; i < SHIFTTABLESIZE; i++)
{
ps->msShift[i] = (unsigned) (m - 2 + 1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6363 2017-01-11 14:20 WM多模算法(C)\WM.cpp
文件 1218 2017-01-11 14:20 WM多模算法(C)\WM.h
目录 0 2018-09-29 15:40 WM多模算法(C)
----------- --------- ---------- ----- ----
7581 3
- 上一篇:通过查看二进制文件判断文件类型
- 下一篇:mv9713.pdf
相关资源
- 51单片机PWM程序,占空比、周期可调整
- SG3525频率PWM控制均可调模块
- 电梯模拟程序C/C 算法实现
- 网奇Iwms免费模板V34
- 基于ARM7 PWM定时器的图像传感器时序信
- wmi技术指南中文版PDF
- 电力电子技术(第4版)_王兆安_带目
- 基于FAN6754A的PWM反激式开关电源的设计
- 采用双闭环控制提高PWM的电源纹波抑
- FPGA实现单极性SPWM调制
- LCL滤波器在三相PWM整流器中的应用
- CPS―SPWM调制方法在H桥多电平变流器中
- 基于FPGA的多电平载波移相SPWM方法实现
- 正弦波逆变器正弦波逆变器的工作原
- 基于DSP的SVPWM变频调速系统
- 采用单片机SPWM的控制应急电源逆变电
- PWM脉宽调制的原理
- 说说PWM脉宽调制原理
- 以单片机AT89S52、光电脉宽调制器芯片
- STM32F103系列PWM输出应用之纸短情长音
- 基于FPGA的SVPWM实现方法
- Infor WMS 培训教程
- linux系统的二级文件系统(QT实现了简
- pwm控制驱动直流电机 可调速 可调转的
- WM系统经典软件大全
- VS开发进阶源码---烟花特效的生日祝福
- WM PPC经典软件集合
- 可控硅调光,PWM调光,0-10V调光哪个更
- 一种基于SG3525A的PWM型开关稳压电源设
- 基于PIC单片机产生SPWM信号控制逆变桥
评论
共有 条评论