22、数据结构笔记之十九列队实现离散事件模拟

           “现实是此岸,理想是彼岸,中间隔着湍急的河流,行动则是架在河上的桥梁。

           这篇开始我们学习串相关的数据结构。

 

1. 串的相关概念

 

   1)串(string)是由零个或多个字符组成的有限序列,又名叫字符串。

   2)串中含有的字符数据称为串的长度,零个字符的串称为空串(null string),它的长度为零。

   3)子串与主串,串中任意个数的连续字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串。

   4)子串在主串中的位置就是子串的第一个字符在主串中的序号。

2. 串的存储结构

与线性表相同,分为两种。

2.1 串的顺序存储结构

    串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。一般是用定长数组来定义。

    规定在串值后面加一个不计入串长度的结束标记字符,比如“\0”来表示串值终结。  

    串的顺序存储方式其实可能会有问题,因为字符串的操作,比如两船的连接Concat、新串的插入等操作,都有可能使得串序列的长度超过了数组长度MaxSize。于是对于串的顺序存储,有一些变化,串值的存

储空间可在程序执行过程中动态分配而得。比如在计算机中存在一个自由存储区,叫做堆。这个堆可由C语言的动态分配函数malloc()和free()来管理。

 

2.2 串的链式存储结构

    串的链式存储结构除了在连接串与串操作时有一定方便外,总的来说不如顺序存储灵活,性能也不如顺序存储结构好。