【数据结构/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;

   }

}
posted @ 2022-11-14 19:02  卞彦秋euReKa  阅读(319)  评论(0编辑  收藏  举报