一个数据结构的问题 急急急!!!!高手请给回答一下!!!

时间:2022-09-29 14:40:44
伪代码 如下:
  

Status Concat(SString &T,SString S1,SString S2){
   if(S1[0]+S2[0]<=MAXSTRLEN){
      T[1..S1[0]]=S1[1..S1[0]];
      T[S1[0]+1..S1[0]+S2[0]]=S2[1..S2[0]];
      T[0]=S1[0]+S2[0];
      uncut=true;
   }
}


这是一个字符串连接的示例,Concat的含义是用T返回由S1和S2联接而成的新串。若未截断,则返回TRUE,否则返回FALSE.

请问  这个语句 T[1..S1[0]]=S1[1..S1[0]];
             T[S1[0]+1..S1[0]+S2[0]]=S2[1..S2[0]];
             T[0]=S1[0]+S2[0];
    T中的这个是1..S1[0]什么意思   ???

请高手给解答一下,小弟正在学习数据结构  严蔚敏版本的  第四章的字符串中的示例谢谢了

5 个解决方案

#1


for(int i=1; i <= S1[0]; i++)
{
   T[i] = S[i];
   T[S1[0] + i + S2[0]] = S2[i];
   T[0] = S1[0] + S2[0];
   uncut=true;
}

#2


字符

#3


T中1..S1[0]是下标值
具体解释是:
S1[0],S2[0]分别是字符串S1和S2的长度,MAXSTRLEN是字符串T的空间大小
if(S1[0]+S2[0] <=MAXSTRLEN)/*说明如果S1和S2的长度和小于T的大小,即T中可以放下S1,S2连接后的新串*/
{
   T[1..S1[0]]=S1[1..S1[0]]; /*将S1的全部内容赋给T,即T的前S1[0]个字符是S1的内容*/
   T[S1[0]+1..S1[0]+S2[0]]=S2[1..S2[0]];/*将S2的内容赋给T,从T的(下标)第S1[0]个位置开始,到S1[0]
                                  +S2[0]处,即T的后S2[0]个字符是S2的内容,从而实现了S1,S2的连接*/ 

   T[0]=S1[0]+S2[0]; /*连接后的新串(T)的长度就是S1,S2两个字符串的长度和*/
}

例如:有两个串 hello和world
则  S1={5,‘h’,‘e’,‘l’,‘l’,‘o’};
    S2={5,‘w’,‘o’,‘r’,‘l’,‘d’};
S1[0]=5;
S2[0]=5;
设有一字符数组T[20];
S1[0]+S2[0]=5+5<20;
则将S1先给T,即T[1]=S1[1],T[2]=S1[2],T[3]=S1[3],T[4]=S1[4],T[5=S1[0]]=S1[5];
在将S2[2]连接到T后,即T[6=S1[0]+1]=S2[1],T[7]=S2[2],T[8]=S2[3],T[9]=S2[4],T[10=S1[0]+S2[0]]=S2[5];
T[0]=S1[0]+S2[0]=10;
T={10,‘h’,‘e’,‘l’,‘l’,‘o’,‘w’,‘o’,‘r’,‘l’,‘d’};
OK!

#4


3楼说的 我明白了

#5


T[1]=S1[1],T[2]=S1[2],T[3]=S1[3],T[4]=S1[4],T[5=S1[0]]=S1[5]·········· 

#1


for(int i=1; i <= S1[0]; i++)
{
   T[i] = S[i];
   T[S1[0] + i + S2[0]] = S2[i];
   T[0] = S1[0] + S2[0];
   uncut=true;
}

#2


字符

#3


T中1..S1[0]是下标值
具体解释是:
S1[0],S2[0]分别是字符串S1和S2的长度,MAXSTRLEN是字符串T的空间大小
if(S1[0]+S2[0] <=MAXSTRLEN)/*说明如果S1和S2的长度和小于T的大小,即T中可以放下S1,S2连接后的新串*/
{
   T[1..S1[0]]=S1[1..S1[0]]; /*将S1的全部内容赋给T,即T的前S1[0]个字符是S1的内容*/
   T[S1[0]+1..S1[0]+S2[0]]=S2[1..S2[0]];/*将S2的内容赋给T,从T的(下标)第S1[0]个位置开始,到S1[0]
                                  +S2[0]处,即T的后S2[0]个字符是S2的内容,从而实现了S1,S2的连接*/ 

   T[0]=S1[0]+S2[0]; /*连接后的新串(T)的长度就是S1,S2两个字符串的长度和*/
}

例如:有两个串 hello和world
则  S1={5,‘h’,‘e’,‘l’,‘l’,‘o’};
    S2={5,‘w’,‘o’,‘r’,‘l’,‘d’};
S1[0]=5;
S2[0]=5;
设有一字符数组T[20];
S1[0]+S2[0]=5+5<20;
则将S1先给T,即T[1]=S1[1],T[2]=S1[2],T[3]=S1[3],T[4]=S1[4],T[5=S1[0]]=S1[5];
在将S2[2]连接到T后,即T[6=S1[0]+1]=S2[1],T[7]=S2[2],T[8]=S2[3],T[9]=S2[4],T[10=S1[0]+S2[0]]=S2[5];
T[0]=S1[0]+S2[0]=10;
T={10,‘h’,‘e’,‘l’,‘l’,‘o’,‘w’,‘o’,‘r’,‘l’,‘d’};
OK!

#4


3楼说的 我明白了

#5


T[1]=S1[1],T[2]=S1[2],T[3]=S1[3],T[4]=S1[4],T[5=S1[0]]=S1[5]··········