BF算法,自己研究的
#include"stdio.h"#include"stdlib.h"
typedef char ElemType;
typedef struct Node
{
ElemType data;
struct Node *next;
}node,*LinkList;
LinkList InitList()
{
LinkList L;
LinkList p,q;
L=(LinkList )malloc(sizeof(node));
q=L;
char c;
printf("请输入字符串,输入Enter结束:");
scanf("%c",&c);
while(c!='\n')
{
p=(LinkList )malloc(sizeof(node));
p->data=c;
q->next=p;
q=p;
scanf("%c",&c);
}
q->next=NULL;
return L;
}
int founction(LinkList L1,LinkList L2)
{
int LengthList(LinkList L);
LinkList p,q,r;
int i,j,k=1,h=1;
p=L1->next;
q=L2->next;
while(1)
{
while(p->data!=q->data)
{
k++;//控制位置
p=p->next;
if(k==LengthList(L1))
{
printf("没有发现相等的字符串!\n");
return 0;
}
}
while(p->data==q->data)
{
h++;//控制位置
p=p->next;
q=q->next;
if(h==LengthList(L2)-1)
{
printf("发现了相等的字符串!\n");
return 0;
}
}
h=1;
q=L2->next;
}
return 0;
}
int LengthList(LinkList L)
{
LinkList p;
int m=0;
p=L->next;
while(p->next!=NULL)
{
p=p->next;
m++;
}
return m;
}
int printList(LinkList L)
{
LinkList p;
p=L->next;
while(p->next!=NULL)
{
printf("%c ",p->data);
p=p->next;
}
return 0;
}
int main()
{
LinkList L1,L2;
L1=InitList();
printList(L1);
printf("\n");
L2=InitList();
printList(L2);
printf("\n");
founction(L1,L2);
} 这其实是KMP算法我自己没发觉 你怎么会以为这是KMP算法?
页:
[1]