作业7: 括号匹配的检验算法。 参考答案7: Status matching(string&exp){ int state=1:i=0: while(i<Length(exp)&&state) switch (expi])! ease"""T(Push(S.expfiD):i++;break: case")" if(NOT StackEmpty(S)&&GetTop(S)=( (Pop(S,e).++] else (state=0:) break case". if(NOTStackEmpty(S)&&GetTop(S)-"[ Pop(S.e):i++ else(state=) break: if(StackEmpty(S)&&state)return OK else return ERROR: ∥matching 10
10 作业 7: 括号匹配的检验算法。 参考答案 7: Status matching(string& exp) { int state = 1; i=0; while (i<Length(exp) && state) { switch (exp[i]) { case ”(” ,”[”:{Push(S,exp[i]); i++; break;} case”)”: { if(NOT StackEmpty(S)&&GetTop(S)=“(“ {Pop(S,e); i++;} else {state = 0;} break; } case”]”: { if(NOT StackEmpty(S)&&GetTop(S)=“[“ {Pop(S,e); i++;} else {state = 0;} break; } } if (StackEmpty(S)&&state) return OK; else return ERROR; }// matching
作业8: 写算法实现串的置换函数Replace(&S,工M: 用V替换主串S中出现的所有与(模式串)T相等的不重叠的子串 参考答案8: void replace(String&S.StringTString V) n=StrLength(S): m=StrLength(T): D0s=1: i-l, while pos <n-m+l&&i) i=Index(S,T,pos); if(i!=0) SubString(ub,S,pos,-pos,∥不置换子串 Concat(news,news, sh) Concat(news,news,V); pos=+m; lif //while SubString(sub,Spos,n-pos+∥剩余串 Concat(S,news,sub)方 /replace
11 作业 8: 写算法实现串的置换函数 Replace (&S, T, V): 用 V 替换主串 S 中出现的所有与(模式串)T 相等的不重叠的子串。 参考答案 8: void replace(String& S, String T, String V) { n=StrLength(S); m=StrLength(T); pos = 1; StrAssign(news, NullStr); i=1; while ( pos <= n-m+1 && i) { i=Index(S, T, pos); if (i!=0) { SubString(sub, S, pos, i-pos); // 不置换子串 Concat(news, news, sub); Concat(news, news, V ); pos = i+m; }//if }//while SubString(sub, S, pos, n-pos+1); // 剩余串 Concat( S, news, sub ); }// replace