- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
串
第四章:串
主讲:周翔
回顾
请分别简述栈和队列的操作特点。
请思考循环队列是如何解决顺序队列的“溢出”问题的。
预习检查
请概括一下字符串的概念
串的顺序存储原理
本章目标
什么是串
什么是串
字符串(string)又简称串,它是由0个或多个字符组成的有限序列,由一对双引号““””括起来。
什么是串
串的相关操作
strAssign():给串赋值;
strLength():求串的长度;
strCopy():复制串;
strEqual():判断两个串是否相等;
strConnect():连接两个串;
strCompete():比较两个串的大小;
Insert():插入操作;
Delete():删除操作;
串的存储结构——顺序存储
串的顺序存储
在串的顺序存储结构中,用一组地址连续的空间,即数组来存储串中的字符,串中的每一个字符占据一个空间。
像高级语言中的串一样,这里同样使用字符’\0’来标识串的结尾。
串的存储结构——顺序存储
串的顺序存储
用顺序结构来实现串,需要先定义一个结构体来保存串的一些信息。
str是指向串的指针,它在分配空间时,利用malloc()/free()来操作堆上的内存空间。
typedefstructstring
{
char*str;//指向串的指针
intlength;//串的长度
}String;
串的存储结构——顺序存储
串的顺序存储
赋值:在为串赋值时,需要先求出待赋值的串的长度,然后利用malloc()函数在堆上开辟相应大小的存储空间,再将要赋值的串复制到新开辟的空间中。
求串的长度:求串的长度非常简单,只需要获取struct中的length变量即可。
复制:将一个串t复制到串s中,需要将s串的空间释放,再重新为其分配与串t大小相等的空间,然后将t串的内容复制到s串中。
串的存储结构——顺序存储
串的顺序存储
判断两个串是否相等:比较两个串是否相等,首先要判断其长度是否相等,在长度相等的前提下,再比对串的每一个字符是否相同。
连接两个字符串:连接两个串,如将串s与串t连接起来,先用malloc()函数分配一段内存空间,其大小为s串与t串的长度之和;然后依次将串s与串t复制到新分配的空间,将s串指向这一段新分配的空间。
比较两个串的大小:比较两个串的大小,并不是比较其长度,而是比较串中字符的大小。
串的存储结构——顺序存储
串的顺序存储
插入:如果向串s中插入串t,则要先求出t串的长度,然后调用malloc()函数分配一块内存,大小为s串与t串的长度之和。如果t串要插入到s串的pos位置,则将s串pos位置前的字符复制到新开辟的内存中,然后将t串顺延复制过来,最后再将s串中pos位置后的字符复制进来。
删除:删除串的某一个子串,例如删除s串中的某一个子串,则分配一块内存,大小为s串长度减去子串长度。要被删除的子串把s串分为前后两部分,先将前半部分复制到新开辟的内存空间中,然后再将后半部分复制进来,这样在新空间里的串就是s串删除后的串。
串的存储结构——链式存储
串的链式存储又叫作链串,它也是用链表来实现的,串中的每一个字符都用一个结点来存储。
串的存储结构——链式存储
串的链式存储
串的链式存储又叫作链串,它也是用链表来实现的,串中的每一个字符都用一个结点来存储。
也可以在每个结点中存储多个字符。
存储密度为1
存储密度为3
您可能关注的文档
- 数据结构——基于Python语言(微课版) 课件 T1_C语言基础.pptx
- 数据结构——基于Python语言(微课版) 课件T1_绪论(什么是数据结构).pptx
- 数据结构——基于Python语言(微课版) 课件T2_线性表(顺序表).pptx
- 数据结构——基于Python语言(微课版) 课件T3_线性表(单链表).pptx
- 数据结构——基于Python语言(微课版) 课件T4_线性表(双向链表和循环链表).pptx
- 数据结构——基于Python语言(微课版) 课件T5_线性表(应用与比较).pptx
- 数据结构——基于Python语言(微课版) 课件T7_栈与队列(队列).pptx
- 数据结构——基于Python语言(微课版) 课件T10_数组与广义表(矩阵).pptx
- 数据结构——基于Python语言(微课版) 课件T11_数组与广义表(广义表).pptx
- 数据结构——基于Python语言(微课版) 课件T12_基于线性表的查找算法.pptx
原创力文档


文档评论(0)