您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 实验4串模式匹配算法的设计与实现
实验4:串模式匹配算法的设计与实现实验所需学时数2学时实验目的1)熟悉串类型的实现方法和文本模式匹配方法2)熟悉如何利用模式匹配算法实现一般的文本处理技术实验内容顺序串的模式匹配算法实验所需器材计算机及VC++6.0软件内容要求:1.在串的基本操作中,在主串中查找模式串的模式匹配算法是文本处理中最常用、最重要的操作之一。所谓子串的定位就是求子串在主串中首次出现的位置,又称为模式匹配或串匹配。模式匹配的算法很多,在这里只要求用最简单的朴素模式匹配算法。2.顺序串的类型定义如下:#defineMaxStrSize256//可根据需要自己定义大小typedefstruct{charch[MaxStrSize];//ch是一个可容纳256个字符的字符数组intlength;}SString;//定义顺序串类型3.测试数据:主串:”ThrougharetrospectivelookatthemathematicsteachingatUSTC,thisarticlesummarizesuniversity’steachingachievementsinpast45years.”子串:teaching输出结果应为:子串teaching出现在主串中的次数为:22次匹配位置分别为:46102;实验结果1、演示程序运行结果。2、说明调试过程中出现的现象学生实验评价依据:优:实验认真、刻苦,有钻研精神,不无故缺席。良:能认真对待实验,不无故缺席。中:基本能认真对待实验,不无故缺席。差:对待实验不够认真,有少量迟到、早退或无故缺席现象。不及格:对待实验马虎、敷衍,经常迟到、早退或无故缺席。#includestdio.h#includestdlib.h#defineMAXL256#defineFALSE0#defineTRUE1typedefunsignedcharSString[MAXL+1];SString&T,char*strs)//生成一个其值等于串常量strs的串T{inti;T[0]=0;//0号单元存储字串长度for(i=0;strs[i];i++)//用数组strs给串T赋值{T[i+1]=strs[i];T[0]=i+1;}}intIndex(SStringS,SStringT,intpos){inti=pos,j=1;while(i=S[0]&&j=T[0]){if(S[i]==T[j]){++i;++j;}//继续比较后面的字符else{i=i-j+2;j=1;}//指针回退,重新开始匹配}if(jT[0])returni-T[0];elsereturn0;}intmain(){SStringS,T;intm;charstrs1[MAXL];//建立主串Scharstrs2[MAXL];//建立模式串Tprintf(请输入主串和子串:\n);printf(主串S:);scanf(%s,strs1);printf(子串T:);scanf(%s,strs2);StrAssign(S,strs1);StrAssign(T,strs2);m=Index(S,T,1);if(m)printf(S={%s}\nT={%s}\n在第%d个位置开始匹配!\n,strs1,strs2,m);elseprintf(S={%s}\nT={%s}\n匹配不成功!\n,strs1,strs2);return0;}
本文标题:实验4串模式匹配算法的设计与实现
链接地址:https://www.777doc.com/doc-2500228 .html