- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 串2—第5章 数组和广义表
数组 char array1[10]={“Hello”}; char array2[10]={‘H’,’e’,’l’,’l’,’0’}; char array3[10]=“Hello”; int a1[5]={1,2,3,4,5}; int a2[]={1,2,3,4,5}; * 第四章 串 4.1 串类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法 4.1 串类型的定义 一、串的基本概念 1.串即字符串,是由零个或多个字符组成的有限序列,是数据元素为单个字符的特殊线性表。 记为:s =‘a1a2…an’ (n≥0 ) 串名 串值 (用‘ ’ 括起来) C++中隐含结束符‘\0’ ,即ASCII码NUL 串与线性表 串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集。 串的基本操作和线性表有很大差别。 在线性表的基本操作中,大多以“单个元素”作为操作对象; 在串的基本操作中,通常以“串的整体”作为操作对象。 基本操作: StrAssign ( T, chars ) StrCopy ( T, S ) DestroyString ( S ) StrEmpty ( S ) StrCompare ( S, T ) Index ( S, T, pos ) StrLength ( S ) SubString ( Sub, S, pos, len ) Concat ( T, S1, S2 ) StrInsert ( S, pos, T ) Replace ( S, T, V ) ClearString ( S ) StrDelete ( S, pos, len ) 串的基本操作示例: gets(str) // 输入一个串; puts(str) // 输出一个串; strcat(str1, str2) // 串联接函数; strcpy(str1, str2, k) // 串复制函数; strcmp(str1, str2) // 串比较函数; strlen(str) // 求串长函数; C 语言字符串函数库中提供下列串处理函数: 头文件:# include string.h 4.2 串的表示和实现 一、定长顺序存储表示 用一组地址连续、长度固定的存储单元存储串值的字符序列。 当串的实际长度大于存储区的长度时,超过部分的串值则被舍去,称为“截断”。 串长的标识方法: 方法1:用下标为0的分量存放串长; 方法2:在串值后面加入结束标记符(‘\0’)。 (C/C++语言) √ #define MAXSTRLEN 255 // 串的“定长” typedef unsigned char Sstring[MAXSTRLEN + 1]; // Sstring[0] 存放串的长度 串的定长顺序存储结构的C语言描述 特点: 串的实际长度可在这个定长的范围内随意设定; 实现串的运算时,基本操作为字符序列的复制 二、堆分配存储表示 用一组地址连续的存储单元存储串值的字符序列,但存储空间是在程序执行过程中动态分配而来。 这种存储结构中,基本操作和定长表示相同,仍然是基于“字符序列的复制”。 在堆存储分配中无须考虑“截断”问题。 在堆分配的存储表示中,存储空间的管理成为算法实现所关心的重要问题,特别是对于新分配空间的大小的计算和存储空间的释放。 typedef struct { char *ch; // 若是非空串,则按串长分配存储区, // 否则不分派存储区,ch为NULL int length; // 串长度 } HString; 串的堆分配存储结构的C语言描述 通常,C语言中提供的串类型就是以这种存储方式实现的。 系统利用函数malloc( ) 和 free( ) 进行串值空间的动态管理,为每一个新产生的串分配一个存储区,称串值共享的存储空间为“堆”。 C语言中的串以一个空字符为结束符,串长是一个隐含值。 这类串操作实现的算法为: 先为新生成的串分配一个存储空间,然后进行串值的复制。 三、块链存储表示 用链表存储串,通常一个结点中存放的不是一个字符,而是一个子串。每个结点分配定长的存储空间(块),最后一个结点可能未满,通常用 ‘#’ 进行填充。 存储密度 = 数据元素所占存储位 实际分配的存储位 设立头指针和尾指针,并给出串的长度,这种结构称为“块链结构”。 9/15=3/5 1/2 讨论:法1存储密度为 ; 法2存储密度为 ; 显然,若数据元素很多,用法2
您可能关注的文档
- 第2章 谐振功率大器-31.ppt
- 第2章MATLAB矩阵与其运算2.1变量和数据操作2.2MATLAB.ppt
- 第2章古典国际贸理论1.ppt
- 离校实习、设计表样.doc
- 离散数学复习辅导之三.doc
- 第2节 内环境稳态的重要性7.ppt
- 第2节植物的呼吸作用.ppt
- 第2讲实数的运算及大小比较1.doc
- 第2课原始地农耕生活.ppt
- 第2课 美国国父华盛顿1.ppt
- 2025至2030城市规划行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025至2030中国红木家具行业产业运行态势及投资规划深度研究报告.docx
- 2025至2030中国动力煤行业供需现状与发展趋势前景分析报告.docx
- 2025至2030中国无缝压缩服行业现状调研及发展态势展望报告.docx
- 2025至2030酥皮类糕点市场行业项目调研及市场前景预测评估报告.docx
- 2025年爆力测试题及答案.doc
- 2025至2030新型钢材产业行业项目调研及市场前景预测评估报告.docx
- 2025年爆品打造测试题及答案.doc
- 2025至2030鸟类食品配料行业产业运行态势及投资规划深度研究报告.docx
- 2025年爆炸头测试题及答案.doc
文档评论(0)