顺序串
字符串简称串,计算机上非数值处理的对象基本都是字符串数据。我们常见的信息检索系统(如搜索引擎)、文本编辑程序(如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;elsereturn 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;
}
总结
如果内容对你有所帮助,那就点个关注,我们一起进步!