首页 > 其他分享 >【数据结构/C语言】实现将已知串S2联接到串S1的后面形成一个新串T,要求在定长顺序存储结构上实现

【数据结构/C语言】实现将已知串S2联接到串S1的后面形成一个新串T,要求在定长顺序存储结构上实现

时间:2022-11-14 19:13:08浏览次数:48  
标签:新串 S2 S1 定长 SString 顺序存储

编写算法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;

   }

}

标签:新串,S2,S1,定长,SString,顺序存储
From: https://www.cnblogs.com/aal-izz-well-eureka/p/16890069.html

相关文章