【数据结构/C语言】实现将已知串S2联接到串S1的后面形成一个新串T,要求在定长顺序存储结构上实现
编写算法Concat(&T, S1, S2) ,实现将已知串S2联接到串S1的后面形成一个新串T,要求在定长顺序存储结构上实现。其中定长顺序存储结构描述如下:
#define MAXSTRLEN 255 //用户可在255以内定义最大串长
typedef unsigned char SString[MAXSTRLEN + 1]; //0号单元存放串的长度
Status Concat(SString &T, SString S1, SString S2)
//用T返回由S1和S2联接而成的新串。若未截断,返回TRUE,否则返回FALSE
{ int i;
if(S1[0] + S2[0] <= MAXSTRLEN) //未截断
{ for(i = 1; i <= S1[0]; i++) //将S1中的字符复制至T中
T[i] = S1[i];
for(i=1; i <= S2[0]; i++) //将S2中的字符复制至T中,偏移S1[0]个位置
T[S1[0] + i] = S2[i];
T[0] = S1[0] + S2[0]; //T的长度为S1与S2长度之和
return TRUE;
}
else if(S1[0] < MAXSTRLEN) //截断S2
{ for(i = 1;i <= S1[0]; i++) //将S1中的字符复制至T中
T[i] = S1[i];
for(i = 1; i <= MAXSTRLEN - S1[0]; i++) //将S2中部分字符复制至T中,偏移S1[0]个位置
T[S1[0] + i] = S2[i];
T[0] = MAXSTRLEN; //T的长度为定义最大串长
return FALSE;
}
else //截断(仅取S1)
{ for(i = 1; i <= S1[0]; i++) //将S1中的字符复制至T中
T[i] = S1[i];
T[0] = MAXSTRLEN; //T的长度为定义最大串长
return FALSE;
}
}