1、T,则返回值=0;若S=T,则返回值0;若ST,则返回值0。StrLength (S)返回串 S 序列中的字符个数,即串的长度。ClearString (&将 S 清为空串。Concat (&T, S1, S2) 初始条件:串 S1 和 S2 存在。 操作结果:用 T 返回由 S1 和 S2 联接而成的新串。 SubString (&Sub, S, pos, len)串S存在,1posStrLength(S)且0lenStrLength(S)-pos+1。用 Sub 返回串S的第 pos 个字符起长度为 len 的子串。 Index (S, T, pos)串S和T存在,T 是非空串,1posS
2、trLength(S)。若主串S中存在和串T值相同的子串,则返回它在主串S中第pos个字 符之后第一次出现的位置;否则函数值为0。Replace (&S, T, V)串 S,T 和 V 存在,T 是非空串。用V替换主串S中出现的所有与T相等的不重叠的子串。 StrInsert (&S, pos, T)串 S 和 T 存在,1posStrLength(S)1。在串 S 的第 pos 个字符之前插入串 T。 StrDelete (&S, pos, len)串 S 存在,1posStrLength(S)-len+1。从串 S 中删除第 pos 个字符起长度为 len 的子串。实验源代码:#inclu
3、destdio.hstdlib.hstring.husing namespace std;#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define TRUE 1#define FALSE 0#define OK 1#define MAXSTRLEN 255 /用户可在内定义最大串长typedef unsigned char SStringMAXSTRLEN+1; /0号单元存放串长度typedef int Status; /Status 是函数的类型,其值是函数结果的代码typedef int ElemType;/chars
4、是串常量,赋于串T的值为chars;void StrAssign(SString &T, char chars255) int length,i=0; length=strlen(chars); if(length255) cout字符串长度超出范围,将截取前个字符;endl; for(i=0;iMAXSTRLEN;i+) Ti+1=charsi; T0=255; elselength; T0=length;/串S 存在,由串S 复制得串T;void StrCopy(SString &T, SString S) int i=0; while(i=S0) Ti=Si; i+;/销毁串void D
5、estroyString(SString & S0=0; coutT,则返回值/若S=T,则返回值=0;Status StrCompare(SString S,SString T) int i,k=0; if(S0T0) return 1; else if(S0MAXSTRLEN)两串联接后超出长度范围,将进行截断;=S10; Ti=S1i; if(i while(i i+;j+; Ti=S2j; T0=MAXSTRLEN; for(j=1;j=1&pos=0&len=StrLength(S)-pos+1) Sub0=len; for(i=pos;=pos+len-1; Subj=Si; j+
6、; cout输入len的值不合法; else 输入pos的值不合法;/串S和T存在,T 是非空串,posStrLength(S)/若主串S中存在和串T值相同的子串,则返回它在/主串S中第pos个字符之后第一次出现的位置;否则函数值为。Status Index(SString S,SString T, int pos) int n,m,i; SString Sub;0) n=StrLength(S); m=StrLength(T); i=pos; while(i插入后会超出串长度范围,将进行截取; m=MAXSTRLEN-(n+pos-1); j=pos; for(i=MAXSTRLEN;iMA
7、XSTRLEN-m;i-) Si=Sj; for(i=pos;=n; Si=Tj; S0=MAXSTRLEN; j=u; for(i=u+n;=n+pos; j-;n+pos; S0=u+n;void StrDelete(SString &S,int pos,int len)/串S 存在,posStrLength(S)-len+1/从串S 中删除第pos 个字符起长度为len 的子串 int n,i,j; n=StrLength(S); if(posStrLength(S)-len+1)输入的pos值不合法; j=pos+len; S0=n-len; Sn-len+1=void shuru(S
8、String &T) char chars256;请输入你要的字符数据: gets(chars); StrAssign(T,chars);void shuchu(SString T) for(int i=0;T0;Ti+1;int main() int n,pos,len; SString T2,T1,S,S1,S2,Sub,V; shuru(S1);串S1为: shuchu(S1); shuru(T1);请输入pos的大小: cinpos; n=Index(S1,T1,pos); if(n=0)主串中不存在这样的子串;第一个这样的子串在主串中第个字符后出现的位置为:n getchar(); shuru(T2); shuru(V); Replace(S1,T2,V);取代后的串S为: shuru(S2); Concat (S,S1,S2);联接后的新串S为: shuchu(S);串S的长度为:StrLength(S) DestroyString(S1); DestroyString(S2);【测试数据及实验结果】 测试数据及实验结果如下:【实验小结】定长顺序串的存储结构与c语言中用字符指针存储字符串相比有何优点?答:优点是定长顺序串的存储结构类似于数组,调用起来比较方便快捷.【源代码说明】1 文件名:shiyan3.cpp
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1