fsminit.cpp
来源:互联网 发布:java聚类分析 编辑:程序博客网 时间:2024/06/02 01:56
- //fsminit.cpp - fsminit
- #include <stdio.h>
- #include <winsock.h>
- #include "tnfsm.h"
- #define TINVALID 0xff //一个无效的跃变索引
- //fsminit - 有限状态机的初始化
- void
- fsminit(u_char fsm[][NCHRS], struct fsm_trans ttab[], int nstates)
- //参数fsm指定一个必须被初始化的转移矩阵
- //参数ttab给出一个紧凑FSM表示的地址
- //参数nstates指定了最终的FSM状态数
- {
- struct fsm_trans *pt;
- int sn, ti, cn;
- //把整个转移矩阵初始化为TINVALID
- for (cn=0; cn<NCHRS; ++cn)
- for (ti=0; ti<nstates; ++ti)
- fsm[ti][cn] = TINVALID;
- //循环扫描紧凑表示中的每个元素,并把该元素指定的状态转换添加到
- //转移矩阵中去
- for (ti=0; ttab[ti].ft_state != FSINVALID; ++ti) {
- pt = &ttab[ti];
- sn = pt->ft_state;
- //再一次循环扫描整个转移矩阵,修改未被填充的转移项,
- //使它们指向紧凑表示末尾的无效状态转移
- if (pt->ft_char == TCANY) {
- for (cn=0; cn<NCHRS; ++cn)
- if (fsm[sn][cn] == TINVALID)
- fsm[sn][cn] = ti;
- } else
- fsm[sn][pt->ft_char] = ti;
- }
- //把所有未初始化的索引设置未一个有效的转移
- for (cn=0; cn<NCHRS; ++cn)
- for (ti=0; ti<nstates; ++ti)
- if (fsm[ti][cn] == TINVALID)
- fsm[ti][cn] = ti;
- }
0 0
- fsminit.cpp
- cpp
- CPP
- CPP
- cpp
- cpp
- CPP
- CPP
- ClientSockThread.cpp&&ClientUrlThread.cpp
- cpp调用其他cpp
- ex34a.cpp&&ex34aDoc.cpp&&ex34aView.cpp
- MainFrm.cpp&&ServerThread.cpp&&SheetConfig.cpp
- CPP thread
- cpp->html
- CFaderWnd.cpp
- PasswordReminder.cpp
- object.cpp
- CmdTarget.cpp
- 如何利用“场景应用”点燃用户真实需求?
- 51 js-unit
- iOS开发之私有API No.1 私有API的查找和生成
- jpg转换成pdf应该怎么做
- Hive函数大全(二)
- fsminit.cpp
- JSONP的理解
- 程序员的进步从阅读自己的老代码开始
- C#使用UUID生成ID
- ios图片局部拉伸
- Hbase 创建,插入,查询
- python 基础知识点整理 和具体应用
- XXX could not be redeployed because it could not be completely removed in the undeployment phase. th
- org.apache.commons.httpclient.HttpClient请求乱码问题