问题
分析
属于串的模式匹配
串的简单模式匹配算法,也叫暴力匹配算法,基本思路是从主串的第一个字符开始,逐个比较主串和模式串中对应的字符,如果相等,则继续比较下一个字符,如果不相等,则从主串的下一个字符开始重新匹配。
具体步骤如下:
-
从主串的第一个字符开始,逐个和模式串中对应的字符进行比较。
-
如果当前字符相等,则继续比较下一个字符。
-
如果当前字符不相等,则将主串的比较位置后移一位,重新开始匹配。
-
如果模式串中的所有字符都匹配成功,则返回匹配成功位置;否则匹配失败,返回-1。
指针
定义a序列指针为p,b序列指针为q,两者可以比较,再定义一个指针pre记录着从哪个节点开始这一轮的比较
int pattern(LinkList A LinList B)//没有对a、b序列进行任何改变所以不引用
{
LNode *p=A->next,*q=B->next;
LNode *pre=A->next;//定义pre,让它保存每次进行匹配的节点
while(p!=NULL&&q!=NULL){
if(p->data=q->data){
p=p->next;
q=q->next;
}else{
pre=pre->next;
p=pre;
q=B->next;
}
}
if(q==NULL){
return 1,
}else return 0;
}