一、字符串
  字符串简称串,是一种特殊的线性表;其特殊性在于数据元素仅由一个个字符组成,作为一种基本的数据类型,字符在计算机信息处理中意义非同一般,计算机非数值处理的对象经常是字符串数据;另外,串还具有自身的特性,常常把一个串作为一个整体来处理,因此,把串作为独立结构的概念加以研究是非常有必要的。
  串(string)是由零个或多个字符组成的有限序列,又名叫字符串。一般记作s=“a1a2……an”(n>=0),其中,s是串的名称,用双引号括起来的字符序列是串的值,注意引号不属于串的内容。ai(1<=i<=n)可以是字母、数字或其他字符,i就是该字符在串中的位置。串中的字符数目n称为串的长度,定义中谈到“有限”是指长度n是一个有限的数值。零个字符的串称为空串(null string),它的长度为零,可以直接用两双引号“”表示,所谓的序列,说明串的相邻字符之间具有前驱和后继的关系。
  空格串:是只包含空格的串;注意它与空串的区别,空格串是由内容有长度的,而且可以不止一个空格;
  子串与主串:串中任意个数的连续字符组成的子序列称为该串的子串,相应的,包含子串的串称为主串;
  子串的位置:子串在主串中的位置就是子串的第一个字符在主串中的序号;
  串相等:若两个串的长度相等且每一个对应字符都相等,就称这两个串是相等的;

数据结构与算法(四)字符串
串的基本运算:
  1)求串长:StrLenght(s);
  2)串赋值:StrAssign(s1,s2);将s2的串值赋予s1
  3)连接运算:StrConcat(s1,s2,s);在s1后面连接s2的串值,产生新串s
  4)求子串:SubStr(s,i,len);返回s的第i至len个字符的子串值,len=0为空串
  5)串比较:StrComp(s1,s2);若s1=s2,操作返回为0,s1<s2,返回值<0,反之>0
  6)串定位:StrIndex(s,t);若t被包含于s中,则返回值为t的位置,反之值为-1
  7)串插入:StrInsert(s,i,t);将串t插入到s的第i个字符位置上
  8)串删除:StrDelete(s,i,len);删除串t中第i至len个字符的子串
  9)串修改:StrRep(s,t,r);用串r替换s中出现的所有与串t相等且不重叠的子串

串的顺序存储结构:
  串的顺序存储是用一组地址连续的存储单元来存储串中的字符序列的,按照预先定义的大小,为每个定义的串变量分配一个固定长度的存储区,一般是用定长数组来定义;既然是定长数组,那么就存在一个预先定义的最大串长度,一般可以将实际的串长度值保存在数组的0下标位置,也有的会定义存储在数组的最后一个下标位置。
  数据结构与算法(四)字符串

串的链式存储结构:
  对于串的链式存储结构,与线性表是相似的,但由于串结构的特殊性,结构中的每个元素数据是一个字符,如果也简单的应用链表存储串值,一个结点对应一个字符,就会存在很大的空间浪费。因此,一个结点可以存放一个字符,也可以考虑存放多个字符,最后一个结点若是未被占满时,可以用“#”或者其他非串值字符补全。
  数据结构与算法(四)字符串
  当然,这里的一个结点存多少个字符才合适就变的很重要,这会直接影响着串处理的效率,需要根据实际情况来做出正确的选择;但串的链式存储结构除了在连接串与串操作时有一定的方便之外,总的来说不如顺序存储灵活,性能也不如顺序存储结构好。

相关文章:

  • 2017-11-22
  • 2021-12-17
  • 2022-01-07
  • 2022-12-23
  • 2021-12-13
  • 2021-12-17
  • 2022-12-23
  • 2021-07-02
猜你喜欢
  • 2021-08-04
  • 2021-05-30
  • 2022-12-23
  • 2021-12-09
  • 2022-12-23
  • 2021-08-06
  • 2022-12-23
相关资源
相似解决方案