数据结构学习 串的表示和实现

来源:互联网 发布:罗马 汉 知乎 编辑:程序博客网 时间:2024/05/20 02:26

在多数非数值处理的程序中,串也以变量的形式出现。

串有3种机内表示方法。

1、定长顺序存储表示

类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列。再次存储结构中,按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区,用定长数组描述之。

这种存储表示存在“截断”现象。

2、堆分配存储表示

以一组地址连续的存储单元存放串值字符序列,但他们的存储空间是在程序执行过程中动态分配而得。用动态分配函数malloc()和free()来管理这个称为“堆”的自由存储区。


3、串的块链存储表示

和线性表的链式存储结构相类似,也可采用链表方式存储串值。用链表存储串值时,存在一个“节点大小”的问题,即每个节点可以存放一个字符,也可以存放多个字符。

为便于操作,当以链表存储串值时,除头指针外还可附设一个尾指针指示链表中的最后一个节点,并给出当前串的长度。成如此定义的结构为块链结构。


进行联接操作时,需处理第一个串尾的无效字符。

在各种串的处理系统中,所处理的串往往很长或很多,所以我们需要考虑串值的存储密度。存储密度定义为:存储密度=串值所占的存储位/实际分配的存储位。存储密度小,处理方便,但存储占用量大。

另外,串的字符集的大小也是一个重要因素。一般地,字符集小,则字符的机内编码就短,这也影响串值的存储方式的选取。


0 0
原创粉丝点击