顺序串
字符串简称串,计算机上非数值处理的对象基本都是字符串数据。我们常见的信息检索系统(如搜索引擎)、文本编辑程序(如Word)、问答系统、自然语言翻译系统等,都是以字符串数据作为处理对象的。本章详细介绍字符串的存储结构及相应的操作。
实现功能
- StrInput(S,T):打印操作。把串S打印出来
- StrAssign(&T, chars):赋值操作。把串T赋值为chars。
- StrEmpty(S):判空操作。若S为空串,则返回TRUE,否则返回FALSE.
- StrCompare(S,T):比较操作。若S>T,则返回值>0;若S=T,则返回值=0;若S<T,
则返回值<0。- StrLength(S):求串长。返回串S的元素个数。
- SubString (&Sub,S,pos,len):求子串。用Sub返回串s的第pos个字符起长度为len的子串。.
- Index(S,T):定位操作。若主串S中存在与串T值相同的子串,则返回它在主串>中第一次出现的位置:否则函数值为0。
函数实现
- 打印操作
void StrPrint(SString S, SString T)
{
for (int i = 1; i <= S.lenth; i++)
{
printf("%c", S.ch[i]);
}
printf("\n");
for (int i = 1; i <= T.lenth; i++)
{
printf("%c", T.ch[i]);
}
printf("\n");
}
- 赋值操作
void StrAssign(SString& T, char* chars)
{
for (int i = 1; chars[i] != '\0'; i++)
{
T.ch[i] = chars[i];
T.lenth = i;
}
}
- 比较操作
int StrCompare(SString S, SString T)
{
int i = 1;
while (i <= S.lenth && i <= T.lenth)
{
int flag = S.ch[i] - T.ch[i];
if (flag != 0)
{
return S.ch[i] - T.ch[i];
}
i++;
}
return S.lenth - T.lenth;
}
- 判空操作
bool StrEmpty(SString S)
{
if (S.lenth == 0)
return true;
else
return false;
}
- 求串长
int StrLength(SString S)
{
return S.lenth;
}
- 求子串
void SubString(SString& Sub, SString S, int pos, int len)
{
for (int i = pos; i <= pos + len; i++)
{
Sub.ch[i - pos + 1] = S.ch[i];
}
Sub.lenth = len;
}
- 定位操作
int Index(SString S, SString T)
{
SString Sub;
for (int i = 1; i <= S.lenth-T.lenth; i++)
{
SubString(Sub, S, i, T.lenth);
int flag=StrCompare(Sub, T);
if (flag == 0)
{
return i;
}
}
return 0;
}
总结
如果内容对你有所帮助,那就点个关注,我们一起进步!