1、串
定义:
(1)串是由零个或多个字符组成的有限序列,又名叫字符串。
(2)字符串简称串,是一种特殊的线性表,它的数据元素仅由一个字符组成。
概念:
(1)长度–串中字符的个数,称为串的长度。
(2)空串–长度为零的字符串称为空串。
(3)空格串–由一个或多个连续空格组成的串称为空格串。
(4)串相等–两个串相等,是指两个串的长度相等且对应的字符都相等。
(5)自串–串中任意连续的字符组成的子序列称为该串的子串。
(6)主串–包含子串的串为该子串的主串。
(7)模式匹配–子串的定位运算又称为模式匹配。
2、串的存储结构
1、定长顺序串(静态存储的顺序串)
用一组地址连续的存储单元来存储串中的字符序列。一般用定长数组为每个定义的串变量分配一个固定长度的存储区。这样的存储方式存在问题,因为定长,在字符串操作时候,比如连接、插入新串、替换等操作时,都可能使串序列的长度超过了数组的长度MaxSize。
2、串的链式存储
与线性表相似,但因为串中每个元素都是一个字符,如果用链表存储串值,一个结点对应一个字符,就会存在很大的空间浪费。因此,一个结点可以存放一个字符,也可以考虑存放多个字符,最后一个结点若是未被占满,可用“#”或其他非串值字符补全。
总结:
1、串的存储结构最好使用顺序存储,而且使用数组是较好,较明了的方法。
2、对于使用链式存储,若是一个结点存储一个字符,会占用大量的空间去存放指针域。
3、若是使用一个结点存储多个字符,虽然占的空间消耗小了,但是相对于数组,依旧需要太多的额外空间,最不好的是,这种方法会使链表的快速插入删除操作的优点消失,甚至复杂了。所以使用顺序存储的方法是更加好的。
参考:https://www.cnblogs.com/ssyfj/p/9450001.html#%E4%B8%80%E5%AE%9A%E4%B9%89