第四章串
410voidStri
g_ReverseStri
gtypesStri
gtyper求s的逆串rStrAssig
r初始化r为空串foriStrle
siiStrAssig
cSubStri
gsi1StrAssig
rCo
catrc把s的字符从后往前添加到r中Stri
g_Reverse411voidStri
g_SubtractStri
gtypesStri
gtypetStri
gtyper求所有包含在串s中而t中没有的字符构成的新串rStrAssig
rfori1iStrle
siStrAssig
cSubStri
gsi1forj1jiStrComparecSubStri
gsj1j判断s的当前字符c是否第一次出现ifijfork1kStrle
tStrComparecSubStri
gtk1k判断当前字符是否包含在t中ifkStrle
tStrAssig
rCo
catrcforStri
g_Subtract412i
tReplaceStri
gtypeSStri
gtypeTStri
gtypeV将串S中所有子串T替换为V并返回置换次数for
0i1iStrle
SStrle
T1i注意i的取值范围ifStrCompareSubStri
gSiStrle
TT找到了与T匹配的子串分别把T的前面和后面部分保存为head和tailStrAssig
headSubStri
gS1i1
fStrAssig
tailSubStri
gSiStrle
TStrle
SiStrle
T1StrAssig
SCo
catheadVStrAssig
SCo
catStail把headVtail连接为新串iStrle
V当前指针跳到插入串以后
ifretur
Replace分析iStrle
V这一句是必需的也是容易忽略的如省掉这一句则在某些情况下会引起不希望的后果虽然在大多数情况下没有影响请思考设SplaceTaceVface则省掉iStrle
V运行时会出现什么结果413i
tDelete_SubStri
gStri
gtypesStri
gtypet从串s中删除所有与t相同的子串并返回删除次数for
0i1iStrle
sStrle
t1iifStrCompareSubStri
gsiStrle
ttStrAssig
headSubStri
gS1i1StrAssig
tailSubStri
gSiStrle
tStrle
siStrle
t1StrAssig
SCo
catheadtail把headtail连接为新串
ifretur
Delete_SubStri
g414StatusNiBoLa
_to_BoLa
Stri
gtypestrStri
gtype
ew把前缀表达式str转换为后缀式
ewI
itstackss的元素为Stri
gtype类型fori1iStrle
strirSubStri
gstri1ifr为字母pushsrelseifStackEmptysretur
ERROR
fpopsaifStackEmptysretur
ERRORpopsbStrAssig
tCo
catrbStrAssig
cCo
catta把算符r子前缀表达式ab连接为新子前缀表达式cpushscforpops
ewifStackEmptysretur
ERRORretur
OKNiBoLa
_to_BoLa
分析基本思想见书后注释323请读者用此程序取代作者早些时候对323题给出的程序415voidStrAssig
Stri
gtypeTcharchars用字符数组chars给串T赋值Stri
gtype的定义见课本fori0T00charsiT0iTi1charsiStrAssig
416charStrCompareStri
gtypesStri
gtypet串的比较st时返r