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桌面雪花飘落的实现代码

下一篇:NDK 数据结构之队列与栈等的实现方法

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载