4.2串的表示和实现 串是一种特殊的线性表,其存储表示和线性表类似, 但又不完全相同。串的存储方式取决于将要对串所进行的 操作。串在计算机中有3种表示方式: ◆定长顺序存储表示:将串定义成字符数组,利用串名 可以直接访问串值。用这种表示方式,串的存储空间在 编译时确定,其大小不能改变。 ◆堆分配存储方式:仍然用一组地址连续的存储单元来 依次存储串中的字符序列,但串的存储空间是在程序运 行时根据串的实际长度动态分配的。 ◆块链存储方式:是一种链式存储结构表示
4.2 串的表示和实现 串是一种特殊的线性表,其存储表示和线性表类似, 但又不完全相同。串的存储方式取决于将要对串所进行的 操作。串在计算机中有3种表示方式: ◆定长顺序存储表示:将串定义成字符数组,利用串名 可以直接访问串值。用这种表示方式,串的存储空间在 编译时确定,其大小不能改变。 ◆堆分配存储方式:仍然用一组地址连续的存储单元来 依次存储串中的字符序列,但串的存储空间是在程序运 行时根据串的实际长度动态分配的。 ◆块链存储方式:是一种链式存储结构表示
4.2.1串的定长顺序存储表示 这种存储结构又称为串的顺序存储结构。是用一组连 续的存储单元来存放串中的字符序列。所谓定长顺序存储 结构,是直接使用定长的字符数组来定义,数组的上界预 先确定。 定长顺序存储结构定义为: #define MAXSTRLEN255;/用户可在255以内定义最大串长 typedef unsigned char SString[MAXSTRLEN +1]; /0号单元存放串的长度
4.2.1 串的定长顺序存储表示 这种存储结构又称为串的顺序存储结构。是用一组连 续的存储单元来存放串中的字符序列。所谓定长顺序存储 结构,是直接使用定长的字符数组来定义,数组的上界预 先确定。 定长顺序存储结构定义为: #define MAXSTRLEN 255;//用户可在255以内定义最大串长 typedef unsigned char SString[MAXSTRLEN +1]; //0号单元存放串的长度
如何表示串的长度? 方案1:用一个变量来表示串的实际长度。 0123456.... Max-1 b d 空闲
如何表示串的长度? 方案1:用一个变量来表示串的实际长度。 0 1 2 3 4 5 6 … … Max-1 a b c d e f g 空 闲 9
如何表示串的长度? 方案1:用一个变量来表示串的实际长度。 方案2:在串尾存储一个不会在串中出现的特殊 字符作为串的终结符,表示串的结尾。 1234567...Max-1 0 0 空闲
如何表示串的长度? 方案1:用一个变量来表示串的实际长度。 方案2:在串尾存储一个不会在串中出现的特殊 字符作为串的终结符,表示串的结尾。 0 1 2 3 4 5 6 7 … … Max-1 a b c d e f g \0 空 闲
如何表示串的长度? 方案1:用一个变量来表示串的实际长度。 方案2:在串尾存储一个不会在串中出现的特殊 字符作为串的终结符,表示串的结尾。 方案3:用数组的0号单元存放串的长度,从1号 单元开始存放串值。 0 1234567....Max-1 空闲
如何表示串的长度? 方案1:用一个变量来表示串的实际长度。 方案2:在串尾存储一个不会在串中出现的特殊 字符作为串的终结符,表示串的结尾。 方案3:用数组的0号单元存放串的长度,从1号 单元开始存放串值。 0 1 2 3 4 5 6 7 … … Max-1 9 a b c d e f g 空 闲