《第四章习题参考答案(3页).doc》由会员分享,可在线阅读,更多相关《第四章习题参考答案(3页).doc(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-第四章习题参考答案-第 3 页第四章习题参考答案4.7、令s=aaab,t=abcabaa,u=abcaabbabcabaacbacba。试分别求出它们的next函数值和nextval函数值。【解】next_s:0,1,2,3nextval_s:0,0,0,3next_t:0,1,1,1,2,3,2nextval_t:0,1,1,0,1,3,2next_u:0,1,1,1,2,2,3,1,2,3,4,5,3,2,2,1,1,2,1,1nextval_u:0,1,1,0,2,1,3,0,1,1,0,5,3,2,2,1,0,2,1,04.25、试写一算法,实现堆存储结构的串的置换操作Replac
2、e(&S,T,V)。【解】类型描述:typedef structchar *ch;int length;HString;算法:int Index(HString S,HString T,int pos)/在串S中第pos个字符之后查找第一个与串T相等的子串;/若找到则返回其位置,否则返回0。if (posS.length) return 1; /判断pos值是否合法for (i=pos-1;i=S.length-T.length;i+) /在串S中下标为i的字符之后查找串T for(j=i;jT.length+i;j+) /将串S中字符与串T中字符逐个比较 if(*(S.ch+j)!=*(T.
3、ch+j-i) break;if (j=T.length+i) return i+1; /若找到则返回子串的第一个字符是主串中的第几个字符return 0; /找不到,返回0/Indexvoid StrDelete(HString &S,int pos,int len)/删除串S中第pos个字符起长度为len的子串for(i=pos-1+len;i=pos-1;i-)/将串S中第pos个字符起到串尾的所有字符往后移 *(S.ch+i+T.length)=*(S.ch+i);for(i=pos-1;i0) /若找到子串 StrDelete(S,j,T.length);在串S中删除找到的子串T StrInsert(S,j,V);在该位置上插入子串V i=j+V.length; /找串S中下一个与串T相等的子串 j=Index(S,T,i);/while循环结束/Replace