假设以链表结构表示串,试编写将串s插入到串t中某个字符之后的算法(若串t中不存在此字符,则将串s连接在串t的末尾)。
假设以链表结构表示串,试编写将串s插入到串t中某个字符之后的算法(若串t中不存在此字符,则将串s连接在串t的末尾)。
【正确答案】:voidLString_Concat(LStringt,LStrings,charc)//用链存储结构,把串s插入到串t的字符c之后{p=t.head;while(p!(i=Find_Char(p,c)))p=p->next;//查找字符cif(!p)//没找到{t.tail->next=s.head;_t.tail=s.tail;//把s连接在t的后面}else{q=p->next;_r=(Chunk*)malloc(sizeof(Chunk));//将包含字符c的节点p分裂为两个_for(j=0;jch[j]='#';//原节点p包含c及其以前的部分_for(j=i;jch[j]=p->ch[j];_p->ch[j]='#';//p的后半部分和r的前半部分的字符改为无效字符#_}_p->next=s.head;_s.tail->next=r;_r->next=q;//把串s插入到节点p和r之间}//elset.curlen+=s.curlen;//修改串长s.curlen=0;}//LString_ConcatintFind_Char(Chunk*p,charc)//在某个块中查找字符c,如找到则返回位置是第几个字符,如没找到则返回0{for(i=0;ich[i]!=c;i++)if(i==CHUNKSIZE)return0;elsereturni+1;}//Find_Char