数据结构之串

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

https://www.jianshu.com/p/d5d05d125ac6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值