特殊的线性表-串-链式存储

来源:互联网 发布:mysql 触发器 锁表 编辑:程序博客网 时间:2024/06/05 06:47
串的链式存储

1、链串

 用单链表方式存储串值,串的这种链式存储结构简称为链串。


2、链串的结构类型定义

    typedef struct node{        char data;        struct node *next;      }LinkStrNode;  //结点类型    typedef LinkStrNode *LinkString; //LinkString为链串类型    LinkString S; //S是链串的头指针
注意:
  ①链串和单链表的差异仅在于其结点数据域为单个字符:
 ②一个链串由头指针唯一确定。

3、 链串的结点大小
 通常,将结点数据域存放的字符个数定义为结点的大小。结点的大小的值越大,存储密度越高。
(1)结点大小为1的链串
  【例】串值为"abcdef"的结点大小为1的链串S如下图所示。



 这种结构便于进行插入和删除运算,但存储空间利用率太低。

(2)结点大小>1的链串
  【例】串值为"abcdef"的结点大小为4的链串S如下图所示。


注意:
 ①为了提高存储密度,可使每个结点存放多个字符。
 ②当结点大小大于1时,串的长度不一定正好是结点大小的整数倍,因此要用特殊字符来填充最后一个结点,以表示串的终结。
 ③虽然提高结点的大小使得存储密度增大,但是做插入、删除运算时,可能会引起大量字符的移动,给运算带来不便。
  【例】上图中,在S的第3个字符后插入“xyz”时,要移动原来S中后面4个字符的位置,结果见下图。



转载自:http://student.zjzk.cn/course_ware/data_structure/web/chuan/chuan4.2.2.htm

0 0
原创粉丝点击