}
for (k=i+j-1;k str.data[k-j]=s.data[k]; str.length=s.length-j; return str; //将s.data[i+j-1..s.length-1]复制到str SqString RepStr(SqString s,int i,int j,SqString t) { int k; } void DispStr(SqString s) { int i; } 设计如下exp4-1.cpp主程序: //文件名:exp4-1.cpp #include { char data[MaxSize]; if (s.length>0) { for (i=0;i printf(\printf(\SqString str; str.length=0; if (i<=0 || i>s.length || i+j-1>s.length) //参数不正确时返回空串 return str; //将s.data[0..i-2]复制到str //将t.data[0..t.length-1]复制到str //将s.data[i+j-1..s.length-1]复制到str str.data[k]=s.data[k]; str.data[i+k-1]=t.data[k]; str.data[t.length+k-j]=s.data[k]; for (k=0;k for (k=0;k str.length=s.length-j+t.length; return str; int length; } SqString; extern void StrAssign(SqString &str,char cstr[]); extern void StrCopy(SqString &s,SqString t); extern bool StrEqual(SqString s,SqString t); extern int StrLength(SqString s); extern SqString Concat(SqString s,SqString t); extern SqString SubStr(SqString s,int i,int j); extern SqString InsStr(SqString s1,int i,SqString s2); extern SqString DelStr(SqString s,int i,int j); extern SqString RepStr(SqString s,int i,int j,SqString t); extern void DispStr(SqString str); void main() { SqString s,s1,s2,s3,s4; printf(\顺序串的基本运算如下:\\n\printf(\建立串s和串s1\\n\StrAssign(s,\StrAssign(s1,\ printf(\输出串s:\ printf(\串s的长度:%d\\n\ printf(\在串s的第9个字符位置插入串s1而产生串s2\\n\s2=InsStr(s,9,s1); printf(\输出串s2:\ printf(\删除串s第2个字符开始的5个字符而产生串s2\\n\s2=DelStr(s,2,3); printf(\输出串s2:\ printf(\将串s第2个字符开始的5个字符替换成串s1而产生串s2\\n\s2=RepStr(s,2,5,s1); printf(\输出串s2:\ printf(\提取串s的第2个字符开始的10个字符而产生串s3\\n\s3=SubStr(s,2,10); printf(\输出串s3:\ printf(\将串s1和串s2连接起来而产生串s4\\n\ } s4=Concat(s1,s2); printf(\输出串s4:\ 连编本工程生成可执行文件Proj4_1.exe.程序执行结果如下: 实验题4.2实现链串各种基本运算的算法 编写一个程序algo4-2.cpp,实现链串的各种基本运算,并在此基础上设计一个程序exp4-2.cpp完成如下功能: 1建立串谁“abcdefghefghijklmn”和串s1=”xyz”; 2输出串s; 3输出串s的长度; 4在串s的第9个字符位置插入串s1而产生串s2; 5输出串s2 6删除串s第2个字符开始的5个字符而产生串s2; 7输出串s2; 8将串s第2个字符开始的5个替换成串s2而产生串s2; 图4.3 Proj4_2工程组成 9输出串s2; 10提取串s的第2个字符开始的10个字符而产生串s3; 11输出串s3; 12将串s1和串s2连接起来而产生串s4; 13输出串s4. 本工程Proj4_2的组成结构如图4.3所示。 算法algo4-2.cpp文件,其中包含如下函数: void StrAssign(LiString *&str,char cstr[]):有串常量cstr创建串str; void StrCopy(LiString *&s,LiString *t):将串t复制到串s. bool StrEqual(LiString *s,LiString *t):判断两个串s和t是否相同。 int StrLength(LiString *s):求串的长度 LiString *Concat(LiString *s,LiString *t):将串t连接到串s之后产生新串 LiString *SubStr(LiString *s,int i,int j):有串s的第i个字符开始的j个字符产生新串。 LiString *InsStr(LiString *s1,int i,LiString *s2):将串s2插入到串s1的第i个位置处 LiString *DelStr(LiString *s,int i,int j):删除串s的第i个字符开始的j个字符产生的新串。 LiString *RepStr(LiString *s,int i,int j,LiString *t):将串s的第i个字符开始的j个字符替换成串t产生新串。 void DispStr(LiString *str):输出串s的所有元素。 对应的程序如下: //文件名:algo4-2.cpp #include char data; struct snode *next; } LiString; void StrAssign(LiString *&s,char cstr[]) { } int i; LiString *r,*p; s=(LiString *)malloc(sizeof(LiString)); r=s; //r始终指向尾节点 for (i=0;cstr[i]!='\\0';i++) { } r->next=NULL; p=(LiString *)malloc(sizeof(LiString)); p->data=cstr[i]; r->next=p;r=p;
相关推荐: