亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C語言數據結構之模式匹配字符串定位問題

2020-05-23 13:35:41
字體:
來源:轉載
供稿:網友

C語言數據結構之模式匹配字符串定位問題

 主要實現了三種字符串的模式匹配,主要包括字符串子操作的集合,字符串指針回溯,和KMP算法 

頭文件 

#ifndef INDEXHEAD_H_INCLUDED#define INDEXHEAD_H_INCLUDED#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXLEN 255typedef 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 <= strlen( ps ) )  {    str[i] = *( ps + i - 1 ) ;    i++ ;  }  return 0 ;}int StrPrint( Sstring str ){  int i = 1 ;  while( i <= str[0] )  {    printf( "%c" , str[i++] ) ;  }  printf( "/n" ) ;  return 0 ;}int StrLength( Sstring str ){  return str[0] ;}int StrCompare( Sstring str1 , Sstring str2 ){  int i = 1 ;  int ret = 0 ;  while( i <= str1[0] && i <= str2[0] )  {    ret = ( unsigned char )str1[i] - ( unsigned char )str2[i] ;    if( ret < 0 )    {      return -1 ;    }    else if( ret > 0 )    {      return 1 ;    }    else    {      i++ ;    }  }  if( i <= str1[0] )  {    return -1 ;  }  else if( i <= str2[0] )  {    return 1 ;  }  else  {    return 0 ;  }}int StrSub( Sstring sub , Sstring str , int pos , int length ){  if( pos < 1 || pos > str[0] || length < 0 || length > str[0] - pos + 1 )  {    printf( "ERROR!/n" ) ;    exit( 1 ) ;  }  int i = 1 ;  sub[0] = length ;  while( i <= length )  {    sub[i] = str[pos + i - 1] ;    i++ ;  }  return 0 ;}int StrIndex1( Sstring str , Sstring sub , int pos ){  pos = 1 ;  Sstring stemp ;  while( pos <= str[0] - sub[0] + 1 )  {    StrSub( stemp , str , pos , sub[0] ) ;    if( !StrCompare( stemp , sub ) )    {      return pos ;    }    pos++ ;  }  return 0 ;}int StrIndex2( Sstring str , Sstring sub , int pos ){  if( pos < 1 || pos > str[0] - sub[0] + 1 )  {    printf( "ERROR!/n" ) ;    exit( 1 ) ;  }  int i = pos ;  int j = 1 ;  while( ( i <= str[0] - sub[0] + 1 ) && ( j <= sub[0] ) )  {    if( str[i] == sub[j] )    {      i++ ;      j++ ;    }    else    {      i = i - j + 2 ;      j = 1 ;    }  }  if( j > 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 < str[0] )  {    if( j== 0 || str[i] == str[j] )    {      ++i ;      ++j ;      next[i] = j ;    }    else    {      j = next[j] ;    }  }  return 0 ;}int StrIndex3( Sstring str , Sstring sub , int pos ){  int i = pos ;  int j = 1 ;  int next[ sub[0] ] ;  GetNext( sub , next ) ;  while( i <= str[0] && j <= sub[0] )  {    if( j == 0 || str[i] == sub[j] )    {      ++i ;      ++j ;    }    else    {      j = next[j] ;    }  }  if( j > 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;}

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美国产视频| 日韩国产精品亚洲а∨天堂免| 日韩精品在线视频观看| 欧美一级黑人aaaaaaa做受| 国产精品私拍pans大尺度在线| 久久91亚洲精品中文字幕奶水| 欧美成人免费一级人片100| 日韩欧美一区视频| 精品自在线视频| 夜色77av精品影院| 日本午夜在线亚洲.国产| 26uuu另类亚洲欧美日本一| 国产精品一二三在线| 97免费视频在线播放| 亚洲成人黄色在线| 欧美日韩午夜激情| 亚洲国产91色在线| 日韩成人在线免费观看| 亚洲欧美日韩一区在线| 亚洲视频在线观看网站| 欧美午夜精品久久久久久人妖| 亚洲成人国产精品| 久久亚洲精品毛片| 国产精品久久久久不卡| 欧美日韩亚洲一区二区| 国色天香2019中文字幕在线观看| 欧美激情网站在线观看| 欧美极品欧美精品欧美视频| 最好看的2019年中文视频| 亚洲国产婷婷香蕉久久久久久| 欧美在线国产精品| 亚洲天堂av女优| 亚洲国产成人爱av在线播放| 国产成人精品久久久| 粉嫩老牛aⅴ一区二区三区| 国产成人av网址| 国产成人高清激情视频在线观看| 最新的欧美黄色| 久久亚洲影音av资源网| 亚洲女人被黑人巨大进入al| 欧美一级淫片videoshd| 国产精品美女久久久久av超清| 国产精品久久久91| 欧美国产日韩精品| 欧美成人中文字幕| 欧美区二区三区| 日韩人在线观看| 欧美一区亚洲一区| 欧洲s码亚洲m码精品一区| 国产成人精品电影久久久| 国产精品久久久久久久久久小说| 国产欧美日韩免费| 久久精品成人一区二区三区| 久久成人精品一区二区三区| 91精品国产九九九久久久亚洲| 亚洲综合精品一区二区| 大荫蒂欧美视频另类xxxx| 欧美激情免费观看| 中文字幕在线精品| 韩国精品美女www爽爽爽视频| www.亚洲免费视频| 欧美午夜性色大片在线观看| 欧美日韩国产限制| 国产视频在线观看一区二区| 91亚洲国产成人久久精品网站| 国产成人综合一区二区三区| 91国产视频在线播放| 国产va免费精品高清在线| 国产精品嫩草影院久久久| 欧美日韩国产一区二区三区| 欧美久久精品午夜青青大伊人| 亚洲精品女av网站| 久久久久久12| 国产精品入口夜色视频大尺度| 精品高清一区二区三区| 国产一区二区三区三区在线观看| 国产精品一区二区3区| 欧美视频中文在线看| 成人有码视频在线播放| 欧美精品免费播放| 国产这里只有精品| 欧美激情一区二区三区成人| 91成人精品网站| 超在线视频97| 成人国产亚洲精品a区天堂华泰| 日韩精品极品在线观看| 亚洲石原莉奈一区二区在线观看| 欧美一级高清免费播放| 久久影视电视剧免费网站清宫辞电视| 中文字幕免费国产精品| 欧美在线观看网址综合| 亚洲午夜久久久久久久| 欧美精品生活片| 91久久夜色精品国产网站| 久久成人综合视频| 欧美午夜性色大片在线观看| 中文字幕视频一区二区在线有码| 日韩国产欧美区| 久久人人看视频| 欧美一级大片在线免费观看| 国产精品久久久久久久电影| 日韩精品在线电影| 国产日韩欧美在线观看| 亚洲精品自拍偷拍| 欧美另类交人妖| www.日韩欧美| 久久久999精品| 欧美成人激情视频免费观看| 国产成人免费91av在线| 日韩精品在线观看视频| 欧美性极品xxxx做受| 欧美激情图片区| 欧美日韩ab片| 久久久久久12| 久久久久久久一区二区| 亚洲成人精品在线| 精品国产依人香蕉在线精品| 欧美日韩性生活视频| 亚洲欧美国产日韩天堂区| 国产一区二区三区18| 亚洲大尺度美女在线| 日本在线精品视频| 亚洲欧美日韩精品久久亚洲区| 国产精品精品视频一区二区三区| 欧美日韩国产精品一区| 精品国模在线视频| 日韩最新中文字幕电影免费看| 欧美激情视频网站| 久久97精品久久久久久久不卡| 一区二区欧美在线| 欧美日韩国产精品专区| 国产亚洲欧洲黄色| 91产国在线观看动作片喷水| 久久免费精品视频| 欧美国产日韩一区二区| 亚洲精品自产拍| 欧美激情二区三区| 91av视频导航| 2019中文字幕在线| 久久精品国产v日韩v亚洲| 日韩精品在线播放| 国产黑人绿帽在线第一区| 欧美在线视频a| 亚洲欧美国产制服动漫| 久久影院资源站| 国产99久久精品一区二区| 欧美视频第一页| 欧美日产国产成人免费图片| 91最新在线免费观看| 亚洲精品资源在线| 国产精品福利在线观看网址| 亚洲精品久久久久久下一站| 91亚洲一区精品| 亚洲精品福利免费在线观看| 日韩精品视频免费专区在线播放| 日韩欧美国产网站| 欧美成人手机在线| 欧美电影免费观看| 欧美国产在线视频| 好吊成人免视频| 国产成人一区二区在线| 亚洲国产成人精品女人久久久| 国产网站欧美日韩免费精品在线观看| www.日本久久久久com.|