数据结构实验(C语言):顺序串

发布时间:2026/7/28 17:09:57
数据结构实验(C语言):顺序串 文章参考过网上的内容如有侵权请联系#includestdio.h#includestdlib.htypedefstruct{chardata[100];//初始化串intlen;//串长}SqString;voidDispStr(SqString s){inti;if(s.len0){for(i0;is.len;i)printf(%c,s.data[i]);printf(\n);}}voidStrAssign(SqStringstr,charcstr[]){//生成一个其值等于串常亮cstr的串Tinti;for(i0;cstr[i]!\0;i)str.data[i]cstr[i];str.leni;}SqStringSubString(SqStringSub,SqString S,intpos,intlen1){//用Sub返回串S的第pos个字符起长度为len的子串if(pos0||posS.len||len10||len1S.len-pos1){printf(ERROR);}inti0,jpos;while(len1--){Sub.data[i]S.data[j];Sub.leni1;i;j;}returnSub;}intStrCompare(SqString S,SqString T){//若St,则返回值0若St,则返回值0若St,则返回值0for(inti0;iS.len;i){if(S.data[i]!T.data[i])return1;}return0;}intIndexStr(SqString S,SqString T){//t为非空串。若主串S中存在于T相等的子串//则返回第一个这样的子串的在S中的位置否则返回0intnS.len;intmT.len,i0;SqString Sub;while(in-m1){SubString(Sub,S,i,m);if(StrCompare(Sub,T)!0)i;elsereturni;}//if(i0) return i; //返回子串在主串中的位置//else return 0; //S中不存在与T相等的子串}intmain(){SqString S,T,Sub1;printf(建立串S\n);StrAssign(S,abcdefgh);printf(建立串T\n);StrAssign(T,defg);printf(输出串S\n);DispStr(S);printf(输出串T\n);DispStr(T);printf(串S中子串T的位置\n);printf(%d,IndexStr(S,T)1);return0;}