(4)连接运算 strconcat(s1S2) void strconcat(linkstring *S1, linkstring $2) linkstring p if (( s1))i*S1=S2; return;] d se if(S2)/“S1和S2均不为空串的情形*/ p=*S1;/用p查找S1的最后一个字符的位置*/ while(p->next)p= p->next; p->next=S2;/将串S2连接到S1之后*
(4)连接运算strconcat(S1 ,S2 ) void strconcat(linkstring *S1, linkstring S2) { linkstring p; if (!(*S1) ) {*S1=S2; return;} else if (S2) /*S1和S2均不为空串的情形*/ { p=*S1; /*用p查找S1的最后一个字符的位置*/ while(p->next ) p= p->next; p->next=S2; /*将串S2连接到S1之后*/ } }
(5)求子串运算 substring(s,i, len) linkstring substring (linkstring S, int i, int len) i int k; linkstring p, q r,t; p=S,k=l; /用p查找S中的第个字符*/ while(p &&k<i)p= p->next; k++i) if (p)(printf("error 1\n"); return(null);) else r=(linkstring)malloc(sizeof(linkstrnode) r->data=p->data;r->next=null
(5)求子串运算substring(S,i,len) linkstring substring(linkstring S,int i, int len) { int k; linkstring p,q,r,t; p=S, k=1; /*用p查找S中的第i个字符*/ while (p && k<i) {p= p->next;k++;} if (!p) {printf("error1\n"); return(null);} else { r=(linkstring) malloc (sizeof(linkstrnode)); r->data=p->data; r->next=null;
k=1;q=r;/用q始终指向子串的最后一个字符的位置 while(p->next&&k<len)/取长度为en的子串* p=p->next k++ (linkstring) malloc(sizeof (inkstrnode)) t->data=p->data; g->next=t;g=t, if(<len(printf("error2\n"); return(null;] else {q->next=nul; return(r)丹}八处理子串的尾部*
k=1; q=r; /*用q始终指向子串的最后一个字符的位置*/ while (p->next && k<len) /*取长度为len的子串*/ { p=p->next ;k++; t=(linkstring) malloc (sizeof (linkstrnode)); t->data=p->data; q->next=t; q=t; } if (k<len) {printf("error2\n") ; return(null);} else {q->next=null; return(r);} /*处理子串的尾部*/ } }
4.2字符串的模式匹配 寻找字符串p在字符串t中首次出现的起始位置称 为字符串的模式匹配,其中称p为模式( pattern),t 为正文text),t的长度远远大于p的长度 4.21朴素的模式匹配算法 朴素模式匹配算法的基本思想是:用p中的每个字 符去与t中的字符一一比较: 正文t:t1 ●●●●● 模式p:p1p2…….pm 如果t1=p1t2=p2…tmn=pm,则模式匹配成功;否
4.2 字符串的模式匹配 寻找字符串p在字符串t中首次出现的起始位置称 为字符串的模式匹配,其中称p为模式(pattern),t 为正文(text),t的长度远远大于p的长度。 4.2.1 朴素的模式匹配算法 朴素模式匹配算法的基本思想是:用p中的每个字 符去与t中的字符一一比较: 正文t: t1 t2 …… tm……tn 模式p: p1 p2 …… pm 如果t1=p1 ,t2=p2 ,…..tm=pm,则模式匹配成功;否 则
将p向右移动一个字符的位置,重新用p中的字符从 头开始与t中相对应的字符依次比较,即: +1° p1p2…Pm1Pm 如此反复,直到匹配成功或者P已经移到使t中剩下 的字符个数小于p的长度的位置,此时意味着模式 匹配失败,表示t中没有子串与模式p相等,我们约 定返回1代表匹配失败。 朴素模式匹配算法的具体实现如下
将p向右移动一个字符的位置,重新用p中的字符从 头开始与t中相对应的字符依次比较,即: t1 t2 t3 …… tm tm+1……tn p1 p2…… pm-1 pm 如此反复,直到匹配成功或者p已经移到使t中剩下 的字符个数小于p的长度的位置,此时意味着模式 匹配失败,表示t中没有子串与模式p相等,我们约 定返回-1代表匹配失败。 朴素模式匹配算法的具体实现如下: