字符串与模式匹配算法幻灯片.ppt
《字符串与模式匹配算法幻灯片.ppt》由会员分享,可在线阅读,更多相关《字符串与模式匹配算法幻灯片.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、字符串与模式匹配算字符串与模式匹配算法法第1页,共42页,编辑于2022年,星期五用数组来实现链表结构用数组来实现链表结构structNodeDataTypenum;intnext;structSlinklistNodelistMAXNUM;intelementNum;1290-1634-1122第2页,共42页,编辑于2022年,星期五3第3页,共42页,编辑于2022年,星期五作业讲评:作业讲评:4第4页,共42页,编辑于2022年,星期五5第5页,共42页,编辑于2022年,星期五6第6页,共42页,编辑于2022年,星期五7第7页,共42页,编辑于2022年,星期五8第8页,共42页,
2、编辑于2022年,星期五9第9页,共42页,编辑于2022年,星期五10第10页,共42页,编辑于2022年,星期五11第11页,共42页,编辑于2022年,星期五链表应用举例链表应用举例 Josephus问题问题求解Josephus问题的一般步骤为:(1)首先利用线性表的一些运算如创建空线性表、插入元素等构造Josephus表;(2)从Josephus表中的第s个结点开始寻找、输出和删除表中的第m个结点,然后再从该结点后的下一结点开始寻找、输出和删除表中的第m个结点,重复此过程,直到Josephus表中的所有元素都删除。12第12页,共42页,编辑于2022年,星期五顺序表应用举例顺序表应用
3、举例 Josephus问题问题voidjosephus_seq(PSeqListpalist,ints,intm)ints1,i,w;s1=s-1;for(i=palist-n;i0;i-)/*找出列的元素*/s1=(s1+m-1)%i;/*下一个出列的元素*/w=palist-elements1;/*求下标为s1的元素的值*/printf(“Outelement%dn”,w);/*元素出列*/delete_seq(palist,s1);/*删除出列的元素*/13第13页,共42页,编辑于2022年,星期五算法复杂度分析算法复杂度分析 (顺序结构)(顺序结构)步骤:1:建立顺序表2:出列时间复
4、杂度分析:出列元素的删除(移动实现)为基本运算(每次最多i-1个元素移动,需要n-1次)(n-1)+(n-2)+1=n(n-1)/2=O(n2)14第14页,共42页,编辑于2022年,星期五算法复杂度分析算法复杂度分析 (链表结构)(链表结构)步骤:(1)建立循环链表;(2)找循环单链表中的第s个结点放在指针变量p中(3)从p所指结点开始计数寻找第m个结点,输出该结点的元素值;(4)删除该结点,并将该结点的下一个结点放在指针变量p中,转去执行(2),直到所有结点被删除为止;时间复杂度分析:三部分时间(创建链表:O(n)+求第s个结点:O(s)+求n个第m个应出列的元素:O(m*n)15第15
5、页,共42页,编辑于2022年,星期五链表的用用:一元多项式和运算链表的用用:一元多项式和运算一元多项式:一元多项式:P Pn n(x)=p(x)=p0 0+p+p1 1x+px+p2 2x x2 2+p+pn n x xn n线性表表示:线性表表示:P=(pP=(p0 0,p,p1 1,p,p2 2,p,pn n)顺序表表示:顺序表表示:只存系数(第只存系数(第i i个元素存个元素存x xi i的系数)的系数)特殊问题:特殊问题:p(x)=1+2xp(x)=1+2x10000 10000+4x+4x4000040000链表表示:链表表示:每个结点结构每个结点结构系数指数0-110210000
6、44000016第16页,共42页,编辑于2022年,星期五一元多项式表示和运算一元多项式表示和运算-3数据定义:typedef struct float c;/系数 int e;/指数 struct item*next Item;加法:相同指数对应结点的系数项相加,如和为0,删除结点,否则必定为 和链表的一个结点。(实质上就是两个单链表的合并问题)3251901101011226317第17页,共42页,编辑于2022年,星期五两个一元多项式的乘法两个一元多项式的乘法可以利用两个一元多项式相加的算法来实现M(x)=A(x)B(x)=A(x)b1xe1+b2xe2+.+bnxen=O(n2)复
7、杂度的运算。18第18页,共42页,编辑于2022年,星期五字符串与模式匹配:字符串与模式匹配:字符串概念与抽象数据类型串模式匹配19第19页,共42页,编辑于2022年,星期五C语言中定义的字符串语言中定义的字符串存储结构:字符指针0操作:char*strcpy(char*dst,char*sorc)intstrcmp(char*str1,char*str2);char*strcat(char*dest,constchar*sorc,size);char*strstr(char*str,constchar*strSearch);size_tstrlen(constchar*str);gets
8、(char*);puts(char*);20第20页,共42页,编辑于2022年,星期五串匹配函数:串匹配函数:char*strstr(const char,constchar);21第21页,共42页,编辑于2022年,星期五线性表到字符串线性表到字符串ADTString createNullStr(void)创建一个空串。int IsNullStr(String s)判断串s是否为空串,若为空串,则返回1,否则返回0。int length(String s)返回串s的长度。String concat(String s1,Sting s2)返回将串s1和s2拼接在一起构成的一个新串。Stri
9、ng subStr(String s,int i,int j)在串s中,求从串的第i个字符开始连续j个字符所构成的子串。int index(String s1,String s2)如果串s2是s1的子串,则可求串s2在串s1中第一次出现的位置。22第22页,共42页,编辑于2022年,星期五顺序结构字符串顺序结构字符串ADT的定义的定义struct SeqString/*顺序串的类型*/int MAXNUM;/*串允许的最大字符个数*/int n;/*串的长度,nMAXNUM*/char *c;typedef struct SeqString *PSeqString;23第23页,共42页,编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 模式 匹配 算法 幻灯片
限制150内