串
def:串,即字符串,是由零个或多个字符组成的有限序列,一般记为S=‘a1a2.。。。an’
其中,S是串名,单引号括起来的字符序列是串的值,an可以是字母,数字或其他字符,串中的字符的个数n称为串的长度。shuxn=0时的串被称为空串(用空集符号表示)
注: 有的语言中串使用双引号括起来,java,c
子串: 串中任意个连续的字符组成的子序列
主串: 包含子串的串
**字符在主串中的位置:**字符在串中的序号(从1开始计数)
**子串在主串中的位置:**子串的第一个字符在主串中的位置、
串VS线性表
串是一种特殊的线性表,数据元素之间呈现线性关系
串的数据对象限定为字符集,串的基本操作如增删改查等通常以子串为操作对象
串的基本操作
StrAssign(&T,chars):赋值操作。把串T赋值为chars
StrCopy(&T,S):复制操作。由串S复制得到串T。
StrEmpty(S):判空操作。若S为空串,则返回TRUE,否则返回false
StrLength(S):求串长。返回串S元素的个数
ClearString(&S):清空操作。将S清为空串
DestoryString(&S):销毁串。将串S销毁(回收储存空间)。
Concat(&T,S1,S2):串连接。用T返回由S1和S2连接而形成的新串
注意存储空间的扩展
SubString(&Sub,S,pos,len):求子串。用Sub返回串S的第pos个字符起长度为len的子串
Index(S,T):定位操作。若主串S中存在与串T值相同的子串,则返回他在主串S中第一次出现的位置,否则函数值为0.
StrCompare(S,T):比较操作。若S>T则返回值>0,若S=T则返回值等于0,若S<T则返回值<0
ASCII码任何数据存到计算机中一定是二进制数。需要确定一个字符和二进制数的对应规则,这就是编码。
采用不同的编码方式,每个字符所占的空间不同,考研中默认每个字符占1B即可
串的存储结构
顺序存储
静态实现
#define MAXLEN 255 //预定义最大串长为255
typedef struct{
char ch[MAXLEN]; //每个分量存储一个字符
int length; //串的实际长度
}SString;
//定长的顺序存储,使用静态数组的方式实现
需要一个额外的空间存放length变量
动态实现