Status HString Insert(( HString&S, int pos, HString T∥把T插入堆结构表示的串S的 第pos个字符之前 if(pos<1) return ERROR; if(pos>S length)pos- S length+1/当插入位置大于串长时,看作添加在串尾 Sch=realloc(sch, (S length+T length) *sizeof(char)); for(FS length-l >=pos-1; i--) Sch[i+ Length}=Sch[i∥后移为插入字符串让出位置 for(0; K<T length; i++) Sch[pos+i-l}= T ch[pos],/插入串T Slength+=T length eturn OK 4.27 int Index new( Stringtype s, Stringtype t)改进的定位算法 F=1J=1 while(i<=s[o]&&K<=t[OD if(j-1&&s[==t)==1&&S[==jR&si+to]-}=t[t[oj) {∥当j=1即匹配模式串的第一个字符时需同时匹配其最后一个 ++J+ i//while ifp→toj) return I-[oj i//nde 4.2 void GEt next( STring&I∥链串上的 get next算法 while(p->succ) f(q=Tlp->data=q->dataStatus HString_Insert(HString &S,int pos,HString T)//把 T插入堆结构表示的串S的 第 pos 个字符之前 { if(pos<1) return ERROR; if(pos>S.length) pos=S.length+1;//当插入位置大于串长时,看作添加在串尾 S.ch=realloc(S.ch,(S.length+T.length)*sizeof(char)); for(i=S.length-1;i>=pos-1;i--) S.ch[i+T.length]=S.ch[i]; //后移为插入字符串让出位置 for(i=0;i<T.length;i++) S.ch[pos+i-1]=T.ch[pos]; //插入串 T S.length+=T.length; return OK; }//HString_Insert 4.27 int Index_New(Stringtype s,Stringtype t)//改进的定位算法 { i=1;j=1; while(i<=s[0]&&j<=t[0]) { if((j!=1&&s[i]==t[j])||(j==1&&s[i]==t[j]&&s[i+t[0]-1]==t[t[0]])) { //当 j==1 即匹配模式串的第一个字符时,需同时匹配其最后一个 i=i+j-2; j=1; } else { i++;j++; } }//while if(j>t[0]) return i-t[0]; }//Index_New 4.28 void LGet_next(LString &T)//链串上的 get_next 算法 { p=T->succ;p->next=T;q=T; while(p->succ) { if(q==T||p->data==q->data) { p=p->succ;q=q->succ; p->next=q;