【数据结构笔记】串

这篇博客详细介绍了串的数据结构,包括定长顺序存储、堆分配存储和块链存储表示,并探讨了在定长存储表示下进行模式匹配的简单算法和KMP算法,强调了KMP算法的时间复杂度及其next[j]的计算方法。
摘要由CSDN通过智能技术生成

串的定长顺序存储表示

串的最长只能个定义为255,由于unsigned char这个数据类型最大能够存放的数字为255,如果采用超过255那么第一个字符单元将无法存储这个字符串的长度

#define Maxsrelenth 255
typedef unsigned char Sstring[Maxsrelenth+1];
//0号元素用来存储字符串的长度

特点:串的长度可以在这个定义的范围内随意设定,超出的部分将会被舍去,这个过程我们称之为截断

串的堆分配存储表示

typedef struct {
   
	int *ch;
  int lenth;
}HString;

堆分配是可大可小的,不同的是,下表为0的应该参与复制而不是记录长度

串的块链存储表示

存储密度=存储元素所占存储位/实际分配的存储位
未来提高存储密度,每个节点存储的不是一个字符而是一个字符串(电子书就是采用这样的存储方式进行存储)

串的模式匹配算法

INDEX(S,T,pos)
返回主串中和T相同的子串在第pos个字符之后第一次出现的位置,否则函数的值为0

采用定长存储表示时
简单算法
int Index(SString S,SString T,int pos)
{
   
	while(i<=S[0]&&j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值