【数据结构】顺序串

顺序串

字符串简称串,计算机上非数值处理的对象基本都是字符串数据。我们常见的信息检索系统(如搜索引擎)、文本编辑程序(如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 则返回值<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;
}

总结

如果内容对你有所帮助,那就点个关注,我们一起进步!

你可能感兴趣的:(数据结构,c#,服务器)