数据结构笔记2 (串)

本文介绍了串(字符串)在C语言中的定义,包括其存储结构(顺序存储和链式存储)以及串的比较原则。串的顺序存储通常使用定长数组实现,而链式存储则通过节点存储多个字符。此外,文章提到了朴素的模式匹配算法,用于在主串中查找子串的位置,该算法通过主串和子串的逐字符比较来实现。

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

第五章:串
(考串的比较,串的拼接,串的查找,C语言)
1:串的定义:串(string)是由零个或者多个字符组成的有限序列,又名叫字符串。一般记为s=“a1a2a3a4…an”(n>0),其中,s是串的名称,用双引号括起来的字符序列是串的值,i就是字符在串中的位置,字符数目n表示串的长度,零长度的字符串是空串。

2:串的比较
比较两个串必须是长度一样,各个对应位置的字符相等时才算相等;
两个串不相等时
n<m,且ai等于bi
存在k<=min(m,n),使得ai=bi,ak<bk

3:串的抽象数据类型
在这里插入图片描述
4:串的存储结构
串的存储与线性表相同分为两种。

串的顺序存储结构:使用一组地址连续的存储单元来存储串中字符序列的,按预定义的大小,为每个定义的串的变量分配一个固定长度的存储区。一般用定长数组表示。
存在一个预定义最大串长度,从0开始,使用动态分配得到,。比如在计算机中存在一个自由储存区,叫做堆。这个堆可以由c语言的动态分配函数malloc()free()来管理

串的链式存储结构:与线性表链式存储类似,但是为了一个字符存一个地址造成浪费,可以考虑一个节点对应多个字符,最后一个节点未被占满可以使用“#”等补全。

总的来说,串的链式存储不如顺序存储灵活,性能也不如顺序存储好。

五:朴素的模式匹配算法
index
找一个单词在一篇文章中的定位问题。这种子串的定位操作称作串的模式匹配。简单来说,就是主串的每个字符作为子串的开头,与要匹配的字符串进行匹配。对主串做大循环,每个字符开头做t长度的小循环,直到匹配成功或全部遍历完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值