#define TRUE 1
#define NULL 0
#define EOS 0
#define MAXPATLEN 100
#define MAXCHAR 128
char *search ();
int max(a,b) int a,b; { return( a>b ? a : b ); }
int count = {0};
main()
{ int fd, i, m, n;
char *s, *t, *p;
s = "aaaaaaaaaaaaaaab";
t = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
p = search(s,t);
m = strlen(s);
n = strlen(t);
printf("searching %s in %s, returns=%d, strlen(s)=%d, strlen(t)=%d\n",
s, t, p, m, n );
printf("total comparisons = %d, max=%d, min=%d\n",count,m*(n-m+2)-1,n);
exit(0);
}
char *search( pat, text )
char *pat, *text;
{ char *p;
if( *pat == EOS ) return( text );
for( p=pat; *text != EOS; text++ ) {
if( (count++, *text != *p) ) { text -= (p-pat); p = pat; }
else if( *(++p) == EOS ) return( text - (p-pat) + 1 );
}
return( NULL );
}
|