文档介绍:【实验名称】第四章串的基本操作及应用【实验目的】1、熟悉将算法转换成程序代码的过程。2、了解串的逻辑结构特性,熟练掌握串顺序存储结构的C语言描述方法。3、熟练掌握串的基本操作:求长度、串的连接、插入、删除等,掌握串的存取特性。【实验原理】串可以可以有三种存储方式,分别为顺序存储、堆分配存储、链式存储,串的基本操作在这三种存储方式下操作。串的模式匹配KMP算法在每一趟匹配过程中出现字符不等时,不需回溯指针,而是利用已经得到的部分匹配结果的结果将模式向右滑动尽可能远的一段距离,继续进行比较。【实验内容】串的顺序存储表示及基本操作(插入、删除、求串长、合并连接串、求子串、串比较等)#include<>#include<>#include<>#include<>#defineSIZE20structHString{charch[SIZE]; intlength;};voidStrInsert(HString&s,intpos,HStringt){ inti,j; if(pos<1||pos>+1)cout<<"ERROR!"; if(){ for(i=-1;i>=pos-1;--i) [i+]=[i]; for(j=0;j<=-1;j++) [pos-1+j]=[j]; +=;}}voidStrDelete(HString&s,intpos,intlen){ inti;intv=pos-1; if(pos<1||pos>||len<0||len>-pos+1)cout<<"ERROR!"; for(i=pos+len-1;i<=-1;i++) [v++]=[i]; -=len;}voidStrAssign(HString&t,charchars[]){ inti; char*c; for(i=0,c=chars;*c;++i,++c); if(!i) { =0; } else { for(intj=0;j<i;j++) [j]=chars[j]; =i; }}intStrLen(HString&s){ ;}pare(HString&s,HStringt){ for(inti=0;i<&&i<;i++) { if([i]!=[i]) return(int)([i]-[i]); } -;}voidConcat(HString&t,HStrings1,HStrings2){ inti=+; for(i=0;i<;i++) [i]=[i]; =+; for(i=;i<;i++) [i]=[i-];}intSubString(HString&sub,HStrings,intpos,intlen){ if(pos<1||pos>||len<0||len>-pos+1) { cout<<"ERROR!"<<endl; return0; } if(!len) { =0; } else { inti=len; for(i=0;i<len;i++) [i]=[pos+i-1]; =len; }}voidDisplay(HString&t){ for(inti=0;i<=-1;i++) cout<<[i]; cout<<endl;}voidmain(){ inti; chars[20];do{ cout<<"选择您要进行的串的基本操作:"<<endl; cout<<""<<endl<<""<<endl<<""<<endl<<""<<endl<<""<<endl<<""<<endl<<""<<endl; cin>>i; switch(i) { case1: { HStrings,t;intpos; cout<<"请输入串s:"; cin>>; StrAssign(s,);