C语言数据结构之模式匹配字符串定位问题
来源:爱站网时间:2020-05-27编辑:网友分享
字符是计算机的单位,字符的值都取决于字符集,匹配字符串需要找有全新的算法,才能提高程序员的工作效率,今天爱站技术频道就为大家带来了C语言数据结构之模式匹配字符串定位问题,大家参考下文学习吧!
字符是计算机的单位,字符的值都取决于字符集,匹配字符串需要找有全新的算法,才能提高程序员的工作效率,今天爱站技术频道就为大家带来了C语言数据结构之模式匹配字符串定位问题,大家参考下文学习吧!
C语言数据结构之模式匹配字符串定位问题
主要实现了三种字符串的模式匹配,主要包括字符串子操作的集合,字符串指针回溯,和KMP算法
头文件
#ifndef INDEXHEAD_H_INCLUDED #define INDEXHEAD_H_INCLUDED #include#include #include #define MAXLEN 255 typedef char Sstring[MAXLEN + 1] ; int StrAssign( Sstring str , char* ps ) ; int StrLength( Sstring str ) ; int StrPrint( Sstring str ) ; int StrCompare( Sstring str1 , Sstring str2 ) ; int StrSub( Sstring sub , Sstring str , int pos , int length ) ; int StrIndex1( Sstring str , Sstring sub , int pos ) ; int StrIndex2( Sstring str , Sstring sub , int pos ) ; int StrIndex3( Sstring str , Sstring sub , int pos ) ; int GetNext( Sstring str , int next[] ) ; #endif // INDEXHEAD_H_INCLUDED
函数实现
#include "indexhead.h" int StrAssign( Sstring str , char* ps ) { int i = 0 ; if( strlen( ps ) > MAXLEN ) { printf( "ERROR!\n" ) ; exit( 1 ) ; } str[i++] = strlen( ps ) ; while( i 0 ) { return 1 ; } else { i++ ; } } if( i str[0] || length str[0] - pos + 1 ) { printf( "ERROR!\n" ) ; exit( 1 ) ; } int i = 1 ; sub[0] = length ; while( i str[0] - sub[0] + 1 ) { printf( "ERROR!\n" ) ; exit( 1 ) ; } int i = pos ; int j = 1 ; while( ( i sub[0] ) { return i - sub[0] ; } return 0 ; } int GetNext( Sstring str , int next[] ) { int i = 1 ; next[1] = 0 ; int j = 0 ; while( i sub[0] ) { return i - sub[0] ; } return 0 ; }
测试匹配函数
#include "indexhead.h" int main() { /*Sstring str ; Sstring str1 ; char* p = "hello" ; StrAssign( str , p ) ; StrAssign( str1 , "ahello" ) ; StrPrint( str ) ; int i = StrLength( str ) ; printf( "%d\n" , i ) ; int j = StrCompare( str , str1 ) ; printf( "%d\n" , j ) ; StrSub( str , str1 , 3 , 4 ) ; StrPrint( str ) ;*/ /*Sstring str1 ;//验证StrIndex1() Sstring sub ; StrAssign( str1 , "shfiodshfdghafhs" ) ; StrAssign( sub , "dgh" ) ; int i = StrIndex1( str1 , sub , 1 ) ; printf( "%d\n" , i ) ;*/ /*Sstring str1 ;//验证StrIndex2() Sstring sub ; StrAssign( str1 , "shfiodshfdghafhs" ) ; StrAssign( sub , "dgh" ) ; int i = StrIndex2( str1 , sub , 1 ) ; printf( "%d\n" , i ) ;*/ Sstring str1 ;//验证StrIndex3() Sstring sub ; StrAssign( str1 , "shfiodshfdghafhs" ) ; StrAssign( sub , "dgh" ) ; int i = StrIndex3( str1 , sub , 1 ) ; printf( "%d\n" , i ) ; return 0; }
以上就是爱站技术频道小编介绍的C语言数据结构之模式匹配字符串定位问题,如果对自己项目要求不高,那很容易被其他人复制后循环使用。
上一篇:Qt桌面雪花飘落的实现代码