第四章 串
学习提要:
1.熟悉串的基本操作的定义,并能利用这些基本操作来实现串的其它各种操作的方法。
2.熟练掌握在串的定长顺序存储结构上实现串的各种操作的方法。
3.掌握串的堆分配存储结构以及在其上实现串操作的基本方法。
4.了解串的块链存储结构。
重难点内容:
串的存储结构
4.1 串类型的定义
基本概念
串(string):由零个或多个字符组成的有限序列,也称字符串。记为:
S = ‘a1a2a3……an’ (n≥0)
如:A= ‘BEIJING’, B= ‘JING’
串的长度:串中字符的数目n 。
空串:不含任何字符的串,串长度为0,用“ ”或 ‘’表示。
空格串:仅由一个或多个空格组成的串, 长度为串中空格字符的个数。
如: ‘ ’ , C= ‘ BEI JING ’
子串:由串中任意个连续的字符组成的子序列。
主串:包含子串的串。
如:A= ‘ BEIJING ’ B= ‘ JING ’
字符在串中的位置:字符在序列中的序号。
子串在主串中的位置:以子串的第一个字符在主串中的位置来表示。
如:A= ‘ BEIJING ’,B= ‘JING ’,
B在A中的位置为4。
串相等:当且仅当两个串的值相等。也就是说,只有两个串的长度相等且各个对应位置的字符都相等时才相等。
串的抽象数据类型定义
ADT String {
数据对象:
D={ ai |ai∈CharacterSet,
i=1,2,...,n, n≥0 }
数据关系:
R1={ < ai-1, ai > | ai-1, ai ∈D,
i=2,...,n }
基本操作:
} ADT String
StrAssign (&T, chars) //串赋值
初始条件:chars是字符串常量。
操作结果:把 chars 赋为 T 的值。
StrCopy (&T, S) //串复制
初始条件:串S存在。
操作结果:由串S复制得串T。
DestroyString (&S)
初始条件:串S存在。
操作结果:串S被销毁。
ClearString (&S)
初始条件:串S存在。
操作结果:将S清为空串。
StrEmpty (S)
初始条件:串S存在。
操作结果:若S为空串,则返回TRUE,否则返回FALSE。
StrCompare (S, T) //串比较