数据结构之串类型

  串的基本概念:

  串(字符串):是零个或多个字符组成的有限序列。记作: S=“a1a2a3…”,其中S是串名,ai(1≦i≦n)是单个,可以是字母、数字或其它字符。

  串值:双引号括起来的字符序列是串值。

  串长:串中所包含的字符个数称为该串的长度。

  空串(空的字符串):长度为零的串称为空串,它不包含任何字符。

  空格串(空白串):构成串的所有字符都是空格的串称为空白串。注意:空串和空白串的不同,例如“  ”和“”分别表示长度为1的空白串和长度为0的空串。

  子串(substring):串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。

  子串的序号:将子串在主串中首次出现时的该子串的首字符对应在主串中的序号,称为子串在主串中的序号(或位置)。

  特别地,空串是任意串的子串,任意串是其自身的子串。

  串相等:如果两个串的串值相等(相同),称这两个串相等。换言之,只有当两个串的长度相等,且各个对应位置的字符都相同时才相等。

  通常在程序中使用的串可分为两种:串变量和串常量。

  串的抽象数据类型定义:

  ADT String{
    数据对象:D = { ai|ai∈CharacterSet,  i=1,2,…,n, n ≥0 }
    数据关系:R = {<ai-1, ai>| ai-1, ai∈D,  i=2,3,…,n }
    基本操作:
    StrAssign(t , chars)
      初始条件: chars是一个字符串常量。
      操作结果:生成一个值为chars的串t 。
    StrConcat(s, t)
      初始条件:串s, t 已存在。
      操作结果:将串t联结到串s后形成新串存放到s中。
    StrLength(t)
      初始条件:字符串t已存在。
      操作结果:返回串t中的元素个数,称为串长。
    SubString (s, pos, len, sub)
      初始条件:串s, 已存在, 1≦pos≦StrLength(s)且 0≦len≦StrLength(s) –pos+1。
      操作结果:用sub返回串s的第pos个字符起长度为len的子串。
    ……
  } ADT  String

  串的存储表示在计算机中可以分为三类:

  • 定长顺序存储表示:将串定义成字符数组,利用串名可以直接访问串值。用这种表示方式,串的存储空间在编译时确定,其大小不能改变。
  • 堆分配存储表示:仍然用一组地址连续的存储单元来依次存储串中的字符序列,但串的存储空间是在程序运行时根据串的实际长度动态分配的。
  • 块链存储方式:是一种链式存储结构表示。
原文地址:https://www.cnblogs.com/mohanchen/p/9311842.html