数据结构与算法系列-串-串的基本概念与存储结构

来源:互联网 发布:ubuntu mate和普通 编辑:程序博客网 时间:2024/06/08 02:39

串的基本概念

串是一种特殊的线性表,他的数据对象是字符集和,它的每个元素都是一个字符一系列相连的字符就组成了一个字符串,简称串
串的描述:s = "a1a2a3..........an" (n >= 0);(n称为串的长度)

串的存储结构

线性表的顺序存储结构和链式存储结构对于串来说都是适用的。

静态存储结构

串的静态存储结构采用顺序存储结构,简称顺序串。
描述:
typedef struct string{char ch[MAXLEN];int len;}STRING;



当计算机按字单位遍址时,一个存储单元由若干个字节组成,这是顺序串存储结构有非紧缩存储和紧缩存储两种方式。

串的非紧缩式存储

假设计算机的字长为32位,即4个字节。则一个存储单元仅存放一个字符,就要浪费三个字节。
优点:对串中的字符处理效率高,但对存储空间的利用率低。

串的紧缩式存储

即尽可能的将多个字符存放在一个字中。紧缩存储放肆和对存储空间利用效率高,但对串中的字符操作很不方便,需要花较多的处理时间。



链式存储结构

串的链式存储结构称为链串,结构与链表相似,链串中每个结点有两个域,一个是值域,存放字符串中的字符,另一个是指针域,用于存放后续结点的地址。

定义:
typedef struct node{  char data;  struct node *next;  }LinkStrNode; //结点类型


索引存储结构

构造方法:
1:开辟一块连续的存储空间,用于存放各串本身的值
2:再另外建一个索引表,在索引表的项目中存放一个串的名称、长度和在存储空间的起始位置。
3:在系统运行过程中,每当有一新的串出现时,系统就从存放串值的存储空间中给新串分配一块连续的空间,用于存放该串的值。另外在索引表中增加一个索引项,该项纪录该串的名称、长度、起始位置。



原创粉丝点击