- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构:串
第四章 串 4.1 串类型的定义 4.2 串的表示和实现 4.2.1 定长顺序存储表示 4.2.2 堆分配存储表示 4.2.3 串的块链存储表示 ADT String{ 数据对象:D={a|a∈CharacterSet,i=1,2, …,n,n≥0} 数据关系:R1={ai-1,ai| ai-1,ai ∈D} 基本操作: StrCopy(T,S) 初始条件:chars是字符串常量 操作结果:生成一个其值为chars的串T StrCompare(S,T) 初始条件:串S,T存在 操作结果:若ST,则返回值0;若S=T,则返回值=0,若ST,则返回值0 StrLength(S) 初始条件:串S存在 操作结果:返回S的元素的个数 Concat(T,S1,S2) 初始条件:串S1,S2存在 操作结果:用T返回由S1和S2联接而成的新串 SubString(Sub,s,pos,len) 初始条件:串S存在,1≤ pos ≤StrLength(S) ,且0≤ len≤StrLength(S)-pos+1 操作结果:用sub返回串S的第pos个字符起长度为len的字串 Index(S,T,pos) 初始条件:串S和T存在,T是非空串, 1≤pos≤StrLength(S) 操作结果:若主串S中存在和串T值相同的字串,则返回它在主 串S中第pos个字符之后第一次出现的位置;否则函数值为0. …… } 串的块链存储表示如下 #define CHUNKSIZE 80 typedef struct Chunk{ char ch[CHUNKSIZE]; struct Chunk *next; }Chunk; Typedef struct { Chunk *head,*tail;//串的头和尾指针 int curlen;//串的当前长度 } * * 4.1 串类型的定义 一、串和基本概念 串(String)是零个或多个字符组成的有限序列。一般记作S=‘a1a2a3…an’,其中S 是串名,双引号括起来的字符序列是串值;ai(1≦i≦n)可以是字母、数字或其它字符;串中所包含的字符个数称为该串的长度。长度为零的串称为空串,它不包含任何字符。 通常将仅由一个或多个空格组成的串称为空白串。 注意:空串和空白串不同,例如‘ ’和‘’分别表示长度为1的空白串和长度为0的空串。 子串:串中任意个连续字符组成的子序列 主串:包含子串的串 子串在主串中的序号(或位置):子串在主串中首次出现时的该子串的首字符对应的主串中的序号 例:设 A=“This is a string” B=“is” 则B是A的子串,A为主串,B在A中的序号(或位置)为3 特别地,空串是任意串的子串,任意串是其自身的子串。 二、串的抽象数据定义 4.2 串的表现和实现 4.2.1定长顺序存储表示 定长顺序存储表示,也称为静态存储分配的顺序表。它是用一组连续的存储单元来存放串中的字符序列。所谓定长顺序存储结构,是直接使用定长的字符数组来定义,数组的上界预先给出: #define MAXSTRLEN 255 typedef char Sstring[MAXSTRLEN+1]; 串长度的表示方法: 方法1:用下标为0的元素存储串长度。 方法2:使用一个不会出现在串中的特殊字符在串值的尾部来表示串的结束。例如,C语言中以字符‵\0′表示串值的终结。 4.2.2堆分配存储表示 这种存储表示的特点是,仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中动态分配而得。所以也称为动态存储分配的顺序表。在C语言中利用函数malloc()、free()来根据实际需要动态分配和释放字符数组空间。这样定义的顺序串类型也有两种形式。 1、typedef char * string; //c中的串相当于此类型定义 2、typedef struct { char *ch; int length; }hstring; 4.2.3 串的块链存储结构 链式存储结构类似线性链表,但需要考虑每个结点是存放一个字符还是多个字符。一个字符的,插入、删除、求长度非常方便,但存储效率低。多个字符的,改善了效率,在处理大字符串时很有效,可用特殊符号来填满未充分利用的结点,但插入、删除不方便。 附设了头尾指针,并给出了当前串的长度的串的链式存储
您可能关注的文档
- 《中国古代文学史》复习题单选.doc
- 《教育心理学》教学大纲(修改稿).doc
- 中国教育史第30讲(北师大网络教育学学院).ppt
- 中国教育史第28讲(北师大网络教育学学院).ppt
- 中国教育史第26讲(北师大网络教育学学院).ppt
- 中国教育史第24讲(北师大网络教育学学院).ppt
- 中国教育史第22讲(北师大网络教育学学院).ppt
- 世界课程改革与发展趋势.ppt
- 中国教育史第29讲(北师大网络教育学学院).ppt
- 中国教育史第27讲(北师大网络教育学学院).ppt
- 专卖店促销员销售与成交技巧培训课件(34P).pptx
- 红色商务风新员工入职销售技巧知识培训课件(34P).pptx
- 专卖店商场销售员销售与成交技巧培训课件(34P).pptx
- 小区物业保安法律知识培训课件(28P).pptx
- 专卖店销售员轻松成交技巧培训(34P).pptx
- 轻松成交客户新员工入职通用销售技巧知识培训(34P).pptx
- 2024年初级《银行业法律法规与综合能力》考前必刷必练题库500题(含真题、必会题).docx
- 2024年“新安法知多少”知识竞赛题库及答案(最新版).docx
- 2024年30秒毕业生面试工作自我介绍.docx
- 2024年《医务人员礼仪培训》心得体会.docx
最近下载
- 小升初英语类数学题汇总及答案.pdf VIP
- 输血科医疗质量与安全管理图表说明.doc
- 2022-2023学年北京市东城区七年级(下)期末英语试卷(附答案详解).docx VIP
- 2024年沪教版中考化学模拟检测试卷及答案 (1).docx VIP
- 二年级数学全册易错题整理含答案-2022年个人用心整理.doc
- 2024年沪教版中考化学模拟检测试卷及答案 (3).docx VIP
- 梦想家园物业服务费用分析评估报告.doc
- 《中国古代寓言》阅读测试题(含答案).doc
- 2023年江苏省徐州市中考数学试卷及参考答案.pptx VIP
- 甘肃省兰州市2021-2022学年八年级下学期期末数学试卷(含答案解析).docx
文档评论(0)