四、串
4.1-串的基本概念
- 串的定义
串是由数字、字母或其他字符组成的有限序列,一般记为
StringName = “a[0]a[1]a[2]···a[i]···a[n-1]”(n>0,0<=i<=n-1)
其中StringName是串名,双引号内的序列是该串的值,n为串的长度,i为某一字符在该串中的下标
- 串的常用术语
- 串的长度:串中包含字符个数即为串的长度
- 空串:串中不包含任何字符时被称为空串,此时串的长度为0
- 空格串:由一个或多个空格组成的串被称为空格串,它的长度是串中空格的个数
- 子串:串中任意个连续字符组成的子序列被称为该串的子串,故其长度为1
- 主串:包含子串的串被称为主串
- 真子串:串的所有子串中,除其自身外,其他子串都被称为该串的真子串
- 子串的位置:子串的第一个字符在主串中对应的位置被称为子串在主串中的位置,简称子串的位置
- 串相等:当两个串的长度相等且对应位置的字符依次相同时,我们称这两个串是相等的。
- 串的抽象数据类型
串的逻辑结构与线性表很相似,单穿的数据元素只能为字符,因此我们认为串是一种特殊的线性表,在串的基本操作中,我们通常以整体为操作对象,这和线性表以单个元素作为操作对象不同。
4.2-定长顺序存储表示
类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列。在串的定长顺序存储结构中,按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。串的实际长度可在这预定义长度的范围内随意,超过预定义长度的串值则被舍去,称之为“截断”
4.3-堆分配存储表示
这种存储表示的特点是,仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程中进行动态分配而得。利用函数为每个新产生的串分配一块实际串长所需的存储空间,若分配成功,则返回一个指向起始地址的指针,作为串的基址,同时为了以后处理方便,约定串长也作为存储结构的一部分。
4.4-串的块链存储表示
和线性表的链式存储结构相类似,也可采用链表方式存储串值。由于串结构的特殊性——结构中的每个数据元素是一个字符,则用链表存储串值时,存在一个“结点大小”的问题,即每个结点可以存放一个字符,也可以存放多个字符。为了方便进行串的操作,当以链表存储串值时,除头指针外还可以附设一个尾指针指示链表中的最后一个结点,并给出当前串的长度。
原文地址:https://www.cnblogs.com/yachao30/p/12229782.html
时间: 2024-10-29 18:57:38