- 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 串的表示和实现 堆分配存储 例:StrInsert(HString S, int pos, HString T) 基本操作:字符序列复制 特殊处理:非法参数 重新为S分配空间,使其达到S.len+T.len 将插入点之后的S后移,为T腾出空间 将T顺序复制到插入位置 4.2 串的表示和实现 块链存储 以非连续的节点形式存放串值序列 以指针域连接各离散的节点 # define CHUNKSIZE 80 typedef struct Chunk { char ch[CHUNKSIZE]; struct Chunk *next; }Chunk; typedef struct { Chunk *head, *tail; int curlen; }LString; 4.2 串的表示和实现 块链存储 以非连续的节点形式存放串值序列 以指针域连接各离散的节点 节点的大小可以是1至n 节点大小影响存储密度 存储密度=串值所占的存储位/实际分配的存储位 上例两串的存储密度分别是:7/12 和 7/14 A B C D E F G # # ^ A B C G ^ … 4.2 串的表示和实现 三种存储方式的比较 定长顺序存储 优点:操作简单,基本操作为字符序列复制。 缺点:存在“截断”问题;浪费存储空间。 堆分配存储 优点:动态分配,节约空间,不存在“截断”问题。 缺点:操作稍复杂,包含动态内存分配操作。 块链存储 优点:对联接等操作极为方便,类似链表操作。 缺点:存储空间利用率不高,操作复杂。 4.3串操作举例:文本编辑 文本编辑器的基本功能可以看作是对字符串的各种操作。 页、行、字符是文本的组织单位。 相应地,文本编辑程序也通过页表、行表和字符来处理文本。 页表记录:页序号,每页的行数,对应行表的首址。 行表记录:行序号,每行字符数,对应行的首址。 4.3串操作举例:文本编辑 0 n ^ 1 4 a b c 2 3 d e ↙ ↙ 3 3 1 2 ↙ 0 n ^ 1 3 n x 0 n ^ 1 4 1 2 3 ↙ 页表 行表 4.3串操作举例:文本编辑 定义行的存储结构 char *ch; 定义行表的存储结构 Typedef struct { int linenumber; int linelength; char *linehead }Line #define MAXLINE 255 Typedef Line LineTable[MAXLINE+1] //0号的linelength记录总行数 4.3串操作举例:文本编辑 例:在num行中的pos位置,插入字符串T。 EdtStrInsert(LineTable L, int num, int pos, HString T) if (num1 || numL[0].linenumber || pos1 || posL[num].linelength+1) return ERROR; //检验参数的合法性 if { (T.length) if (!(L[num].linehead=(char *)realloc(L[num].linehead, (L[num].linelength+T.length)*sizeof(char)))) exit(OVERFLOW); //分配能够容纳插入字符串的空间 4.3串操作举例:文本编辑 for (i=L[num].linelength-1; ipos-1; --i) L[num].linehead[i+T.length]= L[num].linehead[i]; //插入点之后的字符后移,为即将插入的字符串腾出空间 L[num].linehead[pos-1..pos+T.length-2]=T.ch[0..T.length-1]; //复制插入序列 L[num].linelength+=T.length; //修改插入之后的串长 } return OK; } 第四章:串、数组和广义表 线性表 特殊操作(插入删除)栈、队列 特殊用途串 扩展数据元素类型原子类型——结构类型数组、线性表 4.4 数组的定义 5.1 数组的定义 5.2 数组的顺序表示和实现 5.4 广义表的定义 5.5 广义表的存储结构 4.4 数
您可能关注的文档
- 环境管理体系认证-第五章 环境管理体系的建立、实施、保持和改进.ppt
- 环境管理体系认证-第五章 环境管理体系的建立、实施、保持和改进 (2).ppt
- 机械设计基础:01机械设计基础.ppt
- 机械设计基础:02图解法设计凸轮.ppt
- 机械设计基础:03棘轮机构.ppt
- 机械设计基础:04带传动与链传动.ppt
- 机械设计基础:05齿轮传动.ppt
- 机械设计基础:09涡轮蜗杆受力分析习题课.ppt
- 机械设计基础:11螺纹联接与螺旋传动.ppt
- 建筑概论:第二章 民用建筑设计(改).ppt
- 2025年无人机低空医疗物资投放社会效益报告.docx
- 2025年再生塑料行业包装回收利用产业链重构研究.docx
- 《AI眼镜周边产品市场机遇:2025年终端销售与需求增长洞察》.docx
- 2025年坚果加工行业深加工技术突破与市场拓展策略报告.docx
- 2025年通信芯片行业技术竞争与未来趋势报告.docx
- 《2025年生鲜电商配送冷链事故分析与预防措施》.docx
- 《商业航天融资新趋势2025民营卫星企业资本涌入估值分析市场动态》.docx
- 2025年能源绿色健康行业创新技术与市场应用报告.docx
- 2025年无人机低空医疗救援通信方案分析报告.docx
- 2025年烹饪机器人行业市场集中度分析报告.docx
原创力文档


文档评论(0)