2004年1 3シリアルの基本演算によりs 1のすべてのサブシリアルs 2を削除する
1723 ワード
【コード】
#include
#include
typedef struct
{
char* ch;
int length;
}Str;
int strassign(Str* str, char* ch);
int strlength(Str str);
int strcompare(Str str1,Str str2);
int concat(Str* str,Str str1, Str str2);
int substring(Str* substr,Str str,int pos,int len);
int clearstring(Str* str);
void Delete(Str* s1,Str s2)
{
Str sub1,sub2,sub3;
//
sub1.ch = sub2.ch=sub3.ch = NULL;
sub1.length = sub2.length = sub3.length = 0;
// s1 , s2
int i,len;
i = 0;
len = strlength(s2);
while(i < s1->length)
{
//
if(substring(sub1,s1,i,len) != 0)
{
// s2 ,
if(strcompare(sub1,s2)==0)
{
int f1,f2;
// sub1 s1
f1 = substring(sub2,*s1,0,i);
// sub1 s1
f2 = substring(sub3,*s1,i+len,s1->length-len-i);
// sub2
if(f1 != 0)
{
// sub3 ,
if(f2 != 0)
concat(s1,sub2,sub3);
else
strassign(s1,sub2.ch);
}
else if(f2 != 0)
{
// sub2 ,sub3 ,
strassign(s1,sub3.ch);
}
else
clearstring(s1);// s1
}
else
++i;
}
else
++i;
}
}
int main()
{
return 0;
}