数据结构串的基本操作:求串长,连接两个串s,t,求子串,判断是否相等

时间:2024-05-19 19:46:50

源代码:#include <stdio.h>
#define MaxSize 100
typedef struct //串结构体
{ char ch[MaxSize];
int length;
} SqString;
void StrAssign(SqString &s,char t[]) //串赋值
{
int i;
for(i=0;t[i]!=’\0’;i++)
s.ch[i]=t[i];
s.length=i;
}

int StrEqual(SqString s,SqString t)//判断串是否相等
{
int same=1,i;
if(s.length!=t.length)
{
same=0;
}
else{
for(i=0;i<s.length;i++)
if(s.ch[i]!=t.ch[i])
{
same=0;
break;
}
}
return(same);
}

int StrLength(SqString s)//计算串长度
{
return(s.length);
}

SqString Concat(SqString s,SqString t)//串连接
{
SqString str;
int i;
str.length=s.length+t.length;
for(i=0;i<s.length;i++)
str.ch[i]=s.ch[i];
for(i=0;i<t.length;i++)
str.ch[s.length+i]=t.ch[i];
return str;
}

SqString SubStr(SqString s,int i,int j)//求子串
{
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<i+j-1;k++)
str.ch[k-i+1]=s.ch[k];
str.length=j;
return str;
}

void DispStr(SqString s) //输出串
{
int i;
if(s.length>0) {
for(i=0;i<s.length;i++)
printf("%c",s.ch[i]);
printf("%n");
}
}
int main(void){
char ch1[]=“helloworld”, ch2[]=“hi”;
SqString s,t,s1,s2;
int longth,same;
StrAssign(s,ch1);
StrAssign(t,ch2);
longth=StrLength(s);
printf(“串s的长度为:%d\n”,longth);//求s的串长度
s1=Concat(s,t);
printf(“连接后的串为:\n”);//连接s跟t形成新的串s1
DispStr(s1);
s2=SubStr(s,3,7);
printf("\ns的子串为:\n");//求s第三个开始七个字符的子串
DispStr(s2);
same=StrEqual(s,t);//判断串s与t是否相等
if(same==1)
printf("\ns与t相等");
else
printf("\ns与t不相等");
}
效果图:数据结构串的基本操作:求串长,连接两个串s,t,求子串,判断是否相等