采用顺序结构存储串,编写一个实现串通配符匹配的算法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)