文章目录
7 串
7.1 基本知识
7.1.1 串的定义
🌹定义
🌹各种概念
🌹字符串和线性表的区别
7.1.2 串的抽象类型数据定义
7.1.3 串的比较
🌹原理
7.2 串的存储结构
回顾前面的链表、栈、队列,关于静态的存储我们都是采用数组,这里我们也不例外。
🌹7.2.1串的顺序存储
🌹7.2.2 串的链式存储
7.3 基本操作
🌹7.3.1 返回子串操作
//返回子串操作
bool SubString(SString& Sub, SString S, int pos, int len)
{
//子串范围越界
if (pos + len - 1 > S.length)
return false;
for (int i = pos; i < pos + len; i++)
Sub.ch[i - pos + 1] = S.ch[i];
Sub.length = len;
return true;
}
🌹7.3.2 比较操作
//比较操作
int StrCompare(SString S, SString T)
{
//比较操作
for (int i = 1; i < S.length && i <= T.length; i++)
{
if (S.ch[i] != T.ch[i])
return S.ch[i] - T.ch[i];
}
//扫描过的所有字符都相同,则长度长的串更大
return S.length - T.length;
}
🌹7.3.3 定位操作
//定位操作
int Index(SString S, SString T)
{
int i = 1, n = StrLength(S), m = StrLength(T);
SString sub; //由于暂存子串
while (i <= n - m + 1)
{
SubString(sub, S, i, m);
if (StrCompare(sub, T) != 0)
++i;
else
return i;
}
return 0;
}