資料結構之串萬用字元匹配
阿新 • • 發佈:2019-02-20
採用順序結構儲存串,編寫一個實現串萬用字元匹配的演算法pattern_Index(),其中的萬用字元只有“?”,它可以和任一字元匹配成功,例如,pattern_Index(“?re",”there are“)返回的結果是2.
程式碼如下:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int MaxSize=100; typedef struct { char data[MaxSize]; int length; } SqString; SqString str1,str2; void StrAssign(SqString &s,char cstr[]) { int i; for(i=0; cstr[i]!='\0'; ++i) s.data[i]=cstr[i]; s.length=i; } int pattern_index(SqString s1,SqString s2) { int i,j,k; for (i=0; i<s2.length; i++) { j=i; k=0; while(j<s2.length&&k<s1.length&&(s1.data[k]=='?'||s2.data[j]==s1.data[k])) { j++; k++; } if (k>=s1.length) return (i); } return 0; } int main() { char c1[100],c2[100]; gets(c1); gets(c2); StrAssign(str1,c1); StrAssign(str2,c2); cout<<pattern_index(str2,str1)<<endl; }
執行結果: