ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构的学习关于串的一些学习笔记(二)

2021-02-27 19:34:26  阅读:134  来源: 互联网

标签:字符 存储 串值 结点 笔记 学习 长度 数据结构 顺序存储


串的顺序存储结构

**串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的。**按照预定义的大小,为每个定义的串变量分配-一个固定长度的存储区。一般是 用定长数组来定义。
既然是定长数组,就存在一- -个预定义的最大串长度,一-般可以将实际的串长度值保存在数组的0下标位置,有的书中也会定义存储在数组的最后-一个下标位置。但也有些编程语言不想这么干,觉得存个数字占个空间麻烦。它规定在串值后面加一一个不计入串长度的结束标记字符,比如“\0” 来表示串值的终结,这个时候,你要想知道此时的串长度,就需要遍历计算一下才知道了, 其实这还是需要占用一个空间,何必呢。在这里插入图片描述
刚才讲的串的顺序存储方式其实是有问题的,因为字符串的操作,比如两串的连接Concat、新串的插入StrInsert, 以及字符串的替换Replace, 都有可能使得串序列的长度超过了数组的长度MaxSize。
显然,无论是上溢提示报错,还是对多出来的字符串截尾,都不是什么好办法。但字符串操作中,这种情况比比皆是。
于是对于串的顺序存储,有一些变化, 串值的存储空间可在程序执行过程中动态分配而得。比如在计算机中存在-一个自由存储区,叫做“堆”。 这个堆可由C语言的动态分配函数malloc ()和free () 来管理。
串的链式存储结构

对于串的链式存储结构,与线性表是相似的,但由于串结构的特殊性,结构中的每个元素数据是一一个字符, 如果也简单的应用链表存储串值,一个结点对应一个字符,就会存在很大的空间浪费。因此,-一个结点可以存放一一个字符,也可以考虑存放多个字符,最后一个结点若是未被占满时,可以用“#” 或其他非串值字符补全,如

当然,这里一个结点存多少个字符才合适就变得很重要,这会直接影响着串处理的效率,需要根据实际情况做出选择。

但串的链式存储结构除了在连接串与串操作时有一定方便之外, 总的来说不如顺序存储灵活,性能也不如顺序存储结构好。

标签:字符,存储,串值,结点,笔记,学习,长度,数据结构,顺序存储
来源: https://blog.csdn.net/qq_51676015/article/details/114183917

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有