DS 0910(第四章 串)

本文介绍了串(字符串)的基本概念,包括串的定义、子串和主串的区别,以及串与线性表的关系。讨论了串的两种主要存储结构——顺序存储和链式存储,并分析了各自的优缺点。此外,还提及了串的一些基本操作,如赋值、复制、判断空串、求串长等,以及在实际实现中可能涉及的问题,如存储空间的扩展和字符编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def:串,即字符串,是由零个或多个字符组成的有限序列,一般记为S=‘a1a2.。。。an’

其中,S是串名,单引号括起来的字符序列是串的值,an可以是字母,数字或其他字符,串中的字符的个数n称为串的长度。shuxn=0时的串被称为空串(用空集符号表示)

注: 有的语言中串使用双引号括起来,java,c

子串: 串中任意个连续的字符组成的子序列
主串: 包含子串的串
**字符在主串中的位置:**字符在串中的序号(从1开始计数)
**子串在主串中的位置:**子串的第一个字符在主串中的位置、

串VS线性表
串是一种特殊的线性表,数据元素之间呈现线性关系

串的数据对象限定为字符集,串的基本操作如增删改查等通常以子串为操作对象

串的基本操作

StrAssign(&T,chars):赋值操作。把串T赋值为chars
StrCopy(&T,S):复制操作。由串S复制得到串T。
StrEmpty(S):判空操作。若S为空串,则返回TRUE,否则返回false
StrLength(S):求串长。返回串S元素的个数
ClearString(&S):清空操作。将S清为空串
DestoryString(&S):销毁串。将串S销毁(回收储存空间)。

Concat(&T,S1,S2):串连接。用T返回由S1和S2连接而形成的新串

注意存储空间的扩展

SubString(&Sub,S,pos,len):求子串。用Sub返回串S的第pos个字符起长度为len的子串

Index(S,T):定位操作。若主串S中存在与串T值相同的子串,则返回他在主串S中第一次出现的位置,否则函数值为0.

StrCompare(S,T):比较操作。若S>T则返回值>0,若S=T则返回值等于0,若S<T则返回值<0

ASCII码任何数据存到计算机中一定是二进制数。需要确定一个字符和二进制数的对应规则,这就是编码。

采用不同的编码方式,每个字符所占的空间不同,考研中默认每个字符占1B即可

串的存储结构

顺序存储

静态实现

#define MAXLEN 255   //预定义最大串长为255
typedef struct{
   
	char ch[MAXLEN];	//每个分量存储一个字符 
	int length; 		//串的实际长度 
}SString; 

//定长的顺序存储,使用静态数组的方式实现 

需要一个额外的空间存放length变量

动态实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值