1.字符串的连接 设串的最大长度为10, S1=‘ABCDEF' S2=‘GHIJ' S3=‘KLMNOP' S4=‘QRSTUVWXYZ' S1连接S2,结果‘ABCDEFGHIT' S1连接S3,结果‘ABCDEFKLMN’,S3的‘OP'部分被截断。 S4连接S1,结果‘QRSTUVWXYZ',S1全部被截断
1.字符串的连接 设串的最大长度为10, S1=‘ABCDEF’ S2=‘GHIJ’ S3=‘KLMNOP’ S4=‘QRSTUVWXYZ’ S1连接S2,结果‘ABCDEFGHIJ’。 S1连接S3,结果‘ABCDEFKLMN’,S3的‘OP’部分被截断。 S4连接S1,结果‘QRSTUVWXYZ’,S1全部被截断
算法说明: Status Concat(SString &T,SString S1,SString S2)[//4.2 /以T返回由S1和S2联接而成的新串,若未截断,返回TRUE,否则FALSE If(S1 [0]+S2[0]<=MAXSTRLEN){ //未截断 T[1.S1[0]=S1[1.S1[0]: T[S1[o]+1.S1[0]+s2[0]=S2[1.S2[0]; T[o]=S1[o]+s2[o]; uncut=TRUE: else if (S1[0]<MAXSTRSIZE){ /截断 T[1.S1[0]]=S1[1.S1[0]; T[S1 [0]+1..MAXSTRLEN]=S2[1.MAXSTRLEN-S1 [0]]; T [O]=MAXSTRLEN; uncut=FALSE; else //截断 (仅取S1) T[O..MAXSTRLEN]=S1 [0..MAXSTRLEN]; uncut=FALSE; return uncut; ]/Concat
算法说明: Status Concat(SString &T,SString S1,SString S2){//算法4.2 // 以T返回由S1和S2联接而成的新串,若未截断,返回TRUE,否则FALSE If(S1[0]+S2[0]<=MAXSTRLEN){ //未截断 T[1..S1[0]]=S1[1..S1[0]]; T[S1[0]+1..S1[0]+S2[0]]=S2[1..S2[0]]; T[0]= S1[0]+S2[0]; uncut=TRUE; } else if (S1[0]<MAXSTRSIZE){ //截断 T[1..S1[0]]=S1[1..S1[0]]; T[S1[0]+1..MAXSTRLEN]=S2[1..MAXSTRLEN-S1[0]]; T[0]= MAXSTRLEN; uncut=FALSE; } else { //截断 (仅取S1) T[0.. MAXSTRLEN]=S1[0.. MAXSTRLEN]; uncut=FALSE; } return uncut; } // Concat
2.求子串 求子串操作SubStr(s,pos,len)示例 pos=3,len 3 pos=7,len 4 abcdefge abcdefge 空串 cde ge
求子串操作SubStr( s, pos, len)示例 2.求子串 a b c d e f g e pos= 3, len = 3 pos= 7, len = 4 c d e a b c d e f g e g e 空串
算法说明: Status SubString (SString &Sub,SString S,int pos,int len ) /以Sub带回串S中第pos个字符起长度为Ien的子串(算法4.3) /其中,1≤pos≤StrLength(S)且0≤len≤StrLength(S)pos+1 if pos<1 pos>s [o]len<o len s[O]-pos+1) return ERROR; Sub[1..len]S[pos..pos+len-1]; Sub [0]len; return OK; }/SubString
算法说明: Status SubString (SString &Sub,SString S,int pos,int len ){ //以Sub带回串S中第pos个字符起长度为len的子串(算法4.3) //其中,1≤pos≤StrLength(S) 且0≤len≤StrLength(S)-pos+1 if ( pos<1 || pos>s[0] || len<0 || len > s[0]-pos+1) return ERROR; Sub[1..len] = S[pos..pos+len-1]; Sub[0] = len; return OK; } // SubString
在串的顺序存储结构中,如果操作中出现 串值序列的长度超过上界MAXSTRLEN时,约定用 截尾法处理,这种情况不仅在求联接串时可能发 生,在串的其他操作中,如插入、置换等也可能 发生。克服这个弊病只有不限定串长的最大长度, 即动态分配串值的存储空间
在串的顺序存储结构中,如果操作中出现 串值序列的长度超过上界MAXSTRLEN时,约定用 截尾法处理,这种情况不仅在求联接串时可能发 生,在串的其他操作中,如插入、置换等也可能 发生。克服这个弊病只有不限定串长的最大长度, 即动态分配串值的存储空间