欢迎来到天天文库
浏览记录
ID:45097022
大小:51.74 KB
页数:5页
时间:2019-11-09
《C语言数据结构 串的基本操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验九串的基本操作#include#include#includetypedefcharStatus;intstrlen(char*p){inti=0;while(*p++)i++;returni;}typedefstruct{char*ch;//若是非空串,则按串长分配存储区,否则ch为NULLintlength;//串长度}HString;//初始化(产生空串)字符串TvoidInitString(HString*T){(*T).length=0;(*T).ch=NU
2、LL;}//生成一个其值等于串常量chars的串TStatusStrAssign(HString*T,char*chars){inti,j;if((*T).ch)free((*T).ch);//释放T原有空间i=strlen(chars);//求chars的长度iif(!i){//chars的长度为0(*T).ch=NULL;(*T).length=0;}else{//chars的长度不为0(*T).ch=(char*)malloc(i*sizeof(char));//分配串空间if(!(*T).ch)//分配串空间失败exit
3、(0);for(j=0;j
4、]=S.ch[i];(*T).length=S.length;return1;}//若S为空串,则返回1,否则返回0intStrEmpty(HStringS){if(S.length==0&&S.ch==NULL)return1;elsereturn0;}//若S>T,则返回值>0;若S=T,则返回值=0;若S5、h[i]-T.ch[i];returnS.length-T.length;}//返回S的元素个数,称为串的长度intStrLength(HStringS){returnS.length;}//将S清为空串intClearString(HString*S){if((*S).ch){free((*S).ch);(*S).ch=NULL;}(*S).length=0;return1;}//用T返回由S1和S2联接而成的新串intConcat(HString*T,HStringS1,HStringS2){inti;if((*T).ch)6、free((*T).ch);//释放旧空间(*T).length=S1.length+S2.length;(*T).ch=(char*)malloc((*T).length*sizeof(char));//分配新串的长度if(!(*T).ch)exit(0);for(i=0;i7、ub返回串S的第pos个字符起长度为len的子串。intSubString(HString*Sub,HStringS,intpos,intlen){inti;if(pos<18、9、pos>S.length10、11、len<012、13、len>S.length-pos+1)return0;if((*Sub).ch)free((*Sub).ch);//释放旧空间if(!len)//空子串{(*Sub).ch=NULL;(*Sub).length=0;}else{//完整子串(*Sub).ch=(char*)malloc(len*sizeof(ch14、ar));if(!(*Sub).ch)exit(0);for(i=0;i<=len-1;i++)(*Sub).ch[i]=S.ch[pos-1+i];(*Sub).length=len;}return1;}//T为非空串。若主串S中第pos个字符之后存在与T相等
5、h[i]-T.ch[i];returnS.length-T.length;}//返回S的元素个数,称为串的长度intStrLength(HStringS){returnS.length;}//将S清为空串intClearString(HString*S){if((*S).ch){free((*S).ch);(*S).ch=NULL;}(*S).length=0;return1;}//用T返回由S1和S2联接而成的新串intConcat(HString*T,HStringS1,HStringS2){inti;if((*T).ch)
6、free((*T).ch);//释放旧空间(*T).length=S1.length+S2.length;(*T).ch=(char*)malloc((*T).length*sizeof(char));//分配新串的长度if(!(*T).ch)exit(0);for(i=0;i7、ub返回串S的第pos个字符起长度为len的子串。intSubString(HString*Sub,HStringS,intpos,intlen){inti;if(pos<18、9、pos>S.length10、11、len<012、13、len>S.length-pos+1)return0;if((*Sub).ch)free((*Sub).ch);//释放旧空间if(!len)//空子串{(*Sub).ch=NULL;(*Sub).length=0;}else{//完整子串(*Sub).ch=(char*)malloc(len*sizeof(ch14、ar));if(!(*Sub).ch)exit(0);for(i=0;i<=len-1;i++)(*Sub).ch[i]=S.ch[pos-1+i];(*Sub).length=len;}return1;}//T为非空串。若主串S中第pos个字符之后存在与T相等
7、ub返回串S的第pos个字符起长度为len的子串。intSubString(HString*Sub,HStringS,intpos,intlen){inti;if(pos<1
8、
9、pos>S.length
10、
11、len<0
12、
13、len>S.length-pos+1)return0;if((*Sub).ch)free((*Sub).ch);//释放旧空间if(!len)//空子串{(*Sub).ch=NULL;(*Sub).length=0;}else{//完整子串(*Sub).ch=(char*)malloc(len*sizeof(ch
14、ar));if(!(*Sub).ch)exit(0);for(i=0;i<=len-1;i++)(*Sub).ch[i]=S.ch[pos-1+i];(*Sub).length=len;}return1;}//T为非空串。若主串S中第pos个字符之后存在与T相等
此文档下载收益归作者所有