串是由数字、字母或其余字符组成的有限序列,通常记为函数
StringName = “a[0]a[1]a[2]···a[i]···a[n-1]”(n>0,0<=i<=n-1)指针
其中StringName是串名,双引号内的序列是该串的值,n为串的长度,i为某一字符在该串中的下标对象
串的逻辑结构与线性表很类似,单穿的数据元素只能为字符,所以咱们认为串是一种特殊的线性表,在串的基本操做中,咱们一般以总体为操做对象,这和线性表以单个元素做为操做对象不一样。变量
相似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列。在串的定长顺序存储结构中,按照预约义的大小,为每一个定义的串变量分配一个固定长度的存储区。串的实际长度可在这预约义长度的范围内随意,超过预约义长度的串值则被舍去,称之为“截断”数据类型
这种存储表示的特色是,仍以一组地址连续的存储单元存放串值字符序列,但它们的存储空间是在程序执行过程当中进行动态分配而得。利用函数为每一个新产生的串分配一块实际串长所需的存储空间,若分配成功,则返回一个指向起始地址的指针,做为串的基址,同时为了之后处理方便,约定串长也做为存储结构的一部分。程序
和线性表的链式存储结构相相似,也可采用链表方式存储串值。因为串结构的特殊性——结构中的每一个数据元素是一个字符,则用链表存储串值时,存在一个“结点大小”的问题,即每一个结点能够存放一个字符,也能够存放多个字符。为了方便进行串的操做,当以链表存储串值时,除头指针外还能够附设一个尾指针指示链表中的最后一个结点,并给出当前串的长度。链表