string.png
计算机上的非数值处理的对象基本上是字符串数据,
开始,字符串是作为输入和输出的常量出现的,
随着语言加工程序的发展,产生了字符串处理,
在汇编和语言的编译程序中,源程序和目标程序都是字符串数据,
事务处理程序中,实际的数据都是作为字符串处理的,
很多程序中,字符串数据都被作为处理对象
字符串定义.png
串string(字符串):由零个或者多个字符组成的有限序列
s是串的名,
串的值:单引号括出来的是字符序列的串的值
串值用一对单引号括起来,单引号本身不属于串
串的长度:串中字符的数目
空串null string:零个字符的字符串
子串:串中任意连续的字符组成的子序列
主串:包含子串的串
位置:字符在序列中的序号为该字符在串中的位置
串相等:两个串的长度相等,各个对应位置的字符都相等
存储字符串.png
如果在程序设计语言中,串只是作为输入和输出的常量出现,只需要存储串值,
但是多数非数值处理的程序中,串以变量的形式出现,3种串的机内表示方法:
(1)定长顺序存储表示:
用一组地址连续的存储单元存储串值的字符序列
截断:超过预定义长度的串值被舍去,称为截断
在顺序存储结构中,实现串操作的原操作为字符序列的复制
操作的时间复杂度基于复制的字符序列的长度
如果操作中出现串值序列的长度超过上界maxstrlen,约定使用截尾法
解决问题的方法是,动态分配串值的存储空间
(2)堆分配存储表示
仍然是用一组地址连续的存储单元存放串值字符序列,
存储空间是在程序执行过程中动态分配而得
堆分配存储结构的串既有顺序存储结构的特点,处理方便
操作对串长没有限制,在串处理的应用程序中经常使用
(3)串的块链存储表示
串结构的特殊性-结构中的每个数据元素是一个字符
用链表存储串值时,存在一个结点大小的问题,
每个结点可以存放一个或者多个字符
串值的链式存储结构对某些串操作,比如联接等有一定方便,
但是总的来说没有其他两种存储结构灵活,占用存储量大操作复杂
网友评论