所有空串都相等
StrAssign(&T,chars) //串赋值
StrCompare(S,T) //串比较
StrLength(S) //求串长
Concat(&T,S1,S2) //串连结
SubString(&Sub,S,pos,len)//求子串
StrCopy(&T,S) //串拷贝
StrEmpty(S) //串判空
ClearString(&S) //清空串
Index(S,T,pos) //子串的位置
Replace(&S,T,V) //串替换
StrInsert(&S,pos,T) //子串插入
StrDelete(&S,pos,len) //子串删除
DestroyString(&S) //串销毁
#define MAXLEN 255
typedef struct
{
char ch[MAXLEN+1];
int length;
}SString;
#define CHUNKSIZE 80
typedef struct Chunk
{
char ch[CHUNKSIZE];
struct Chunk *next;
}Chunk;
typedef struct
{
Chunk *head,*tail; //串的头指针和尾指针
int curlen; //串的当前长度
}LString;
BF算法描述
int Index_BF(SString S,SString T)
{
int i=1,j=1;
while(i<=S.length&&j<=T.length)
{
if(s.ch[i]==t.ch[j])
{
++i;++j;
}
else
{
i=i-j+2;j=1;
}
}
if(j>=T.length)
return i-T.length;
else
return 0;
}
KMP算法描述
int Index_KMP(SString S,SString T)
{
int i=1,j=1;
while(i<S.length&&j<T.length)
{
if(j==0||s.ch[i]==t.ch[j])
{
++i;++j;
}
else
{
j=next[i];
}
}
if(j>T.length)
return i-T.length;
else
return 0;
}
void get_next(SString T,int &next[])
{
i=1;next[1]=0;j=0;
while(i<T.length)
{
if(j==0||T.ch[i]==T.ch[j])
{
++i;++j;
next[i]=j;
}
else
j=next[j];
}
}
InitArray(&A,n,bound1,...,boundn) //构造数组A
DestroyArray(&A) //销毁数组A
Value(A,&e,index1,...,indexn) //取数组元素值
Assign(A,&e,index1,...,indexn) //给数组元素赋值
广义表一般用大写字母表示,小写字母表示原子
表头:若广义表非空,则其第一个元素a1就是表头
注:表头可以是原子,也可以是子表
表尾:除表头之外的其他元素组成的表
注:表尾不是最后一个元素,而是一个子表
广义表性质: