1、串的基本概念与存储结构

1、串的基本概念

	串(字符串):是零个或多个字符组成的有限序列。记作: S=“a1a2a3…”,其中S是串名,ai(1≦i≦n)是单个,可以是字母、数字或其它字符。
	串值:双引号括起来的字符序列是串值。
	串长:串中所包含的字符个数称为该串的长度。
	空串(空的字符串):长度为零的串称为空串,它不包含任何字符。
	空格串(空白串):构成串的所有字符都是空格的串称为空白串。
	
	注意:空串和空白串的不同,例如“ ”和“”分别表示长度为1的空白串和长度为0的空串。

2、串的存储表示与表现
串是一种特殊的线性表,其存储表示和线性表类似,但又不完全相同。串的存储方式取决于将要对串所进行的操作。串在计算机中有3种表示方式:

	◆ 定长顺序存储表示:将串定义成字符数组,利用串名可以直接访问串值。用这种表示方式,串的存储空间在编译时确定,其大小不能改变。
	◆ 堆分配存储方式:仍然用一组地址连续的存储单元来依次存储串中的字符序列,但串的存储空间是在程序运行时根据串的实际长度动态分配的。
	◆ 块链存储方式:是一种链式存储结构表示。
//串的定长顺序存储表示
#define MAX_STRLEN 256
typedef struct{ 
	char str[MAX_STRLEN] ;
	int length;
} StringType ;

//串的堆分配存储表示
typedef struct{ 
	char *ch; /* 若非空,按长度分配,否则为NULL */
	int length; /* 串的长度 */
} HString ;

//串的链式存储表示
//⑴ 块结点的类型定义
#define BLOCK_SIZE 4
typedef struct Blstrtype{ 
	char data[BLOCK_SIZE] ;
	struct Blstrtype *next;
}BNODE ;
//(2) 块链串的类型定义
typedef struct{
	BNODE head; /* 头指针 */
	int Strlen ; /* 当前长度 */
} Blstring ;
/*
在这种存储结构下,结点的分配总是完整的结点为单位,因此,为使一
个串能存放在整数个结点中,在串的末尾填上不属于串值的特殊字符,以表示串的终结。
当一个块(结点)内存放多个字符时,往往会使操作过程变得较为复杂,
如在串中插入或删除字符操作时通常需要在块间移动字符。
*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值