复习:串

串的定义

  串是计算机信息处理中最常见的一种数据结构,是有限的字符序列,记作S=”a1a2……an”S=”a1a2……an”其中S是串名,用双引号括起来的字符序列是串值;双引号是定界符,不是串的成分;aiai(1小于等于i小于等于n)是程序设计语言的字符集中的字符,称为串元素;n是串的长度,且n大于等于0。当n=0时,称为空串,记作S=“ ”(一对双引号之间没有任何字符),而S=“ ”(一对双引号之间有一个空白字符)称为空白串。
  串中任意个连续的字符组成的子序列称为该串的子串。相应地,包含子串的串称为主串。通常将字符在串中的序号称为该字符在串中的位置。子串在主串的位置以子串的第一个字符在主串中的位置来表示。
  当且仅当两个串的值相等时,两个串是相等的。即只有两个串的长度相等,且串中各个对应位置的字符均相等,两个串才是相等的。

串的顺序存储结构

在顺序串中,串的字符被依次存放在一组连续的存储空间中

//串的顺序存储结构

(1)SqString的串由length控制长度
(2)C、C++中的字符串是以’\0’结束的

typedef struct
{
char data[Maxsize];
int length;
}SqString;

//串的赋值

void StrAssign(SqString &s,char cstr[])
{
int i;
for(i=0;cstr[i]!=’\0’;i++)
{
s.data[i]=cstr[i];
}
s.length=i;
}

//串的复制

void StrCopy(SqString &s,SqString t)
{
int i;
for(i=0;i

//判断串是否相等

bool StrEqual(SqString s,SqString t)
{
bool same=true;
if(s.length!=t.length)
same=false;
else
{
for(int i=0;i

//求串的长度

int StrLenght(SqString s)
{
return s.length;
}

//求子串

SqString SubStr(SqString,int i,int j) //i是逻辑位序
{
SqString str;
int k;
str.length=0;
if(i<=0||i>s.length||j<0||i+j-1>s.length)
return str;
for(k=i-1;k

//插入串

SqString InsStr(SqString s1,int i,SqString s2)
{
int j;
SqString str;
str.length=0;
if(i<=0||i>s1.length+1)
return str;
for(j=0;j

//删除串的字符

SqString DelStr(SqString s,int i,int j)
{
int k;
SqString str;
str.length=0;
if(i<0||i>s.length||i+j>s.length+1)
return str; //参数不正确的时候 返回空串
for(k=0;k

//替换子串

SqString RepStr(SqString s,int i,int j,SqString t)
{
int k;
SqString str;
str.length=0;
if(i<=0||i>s.length||i+j-1>s.length)
return str;
for(k=0;k

//输出串

void DispStr(SqString s)
{
int i;
if(s.length>0)
{
for(i=0;i

猜你喜欢

转载自blog.csdn.net/weixin_38195506/article/details/80866091