北大培训第3天 tire树 next指针 和ac自动机

暑假培训的时候ac自动机就没搞太懂,现在又听了一遍北大老师讲的,总算明白了一些,准备自己写代码实现一下匹配的功能:

首先是tire树的构造,采用了构造函数的用法,而且是采用的是静态存储空间,降低了存储的难度,更加容易写和掌控,避免了空间的释放;

采用Next指针是用的多建立了一个0节点,0节点指向首节点的方式是next的赋值运算更加简单。next是寻找父节点的next节点的孩子是否和要找的字母相匹配。

然后要注意的是危险节点和终止节点的关系,危险节点时其next指针指向终止节点,叫做危险节点,能有效的排除模式匹配用漏过的字符。

tire树的构造,采用构造函数的方法。

#include<stdio.h>      
#include<string.h>
#include<stdlib.h>
#include<iostream>                  //对tire树进行初始化的验证,在开辟内存空间的时候赋初值。
using namespace std;
const int letters=26;
struct Cnode{
            Cnode * pchild[letters] ;
            Cnode *pre;
            bool stopnode;
            Cnode(){
                   memset(pchild,0,sizeof(pchild));
                   pre=NULL;
                   stopnode=0;
              printf("a\n");                            //验证会不会进行 赋值操作,会的话会输出 a字符
                   }       
            };
int main()
{
    struct Cnode *p;
    p=new Cnode();
    int i;
    cin>>i;
}

转载于:https://www.cnblogs.com/ysh-blog/archive/2012/07/19/2598979.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值