《数据结构》课程 实验报告四 串
班级:418教育技术班 学号: 2018744109 姓名: 邓远义 实验目的和要求:
1.理解掌握串的有关概念和基本运算实现。 2.掌握模式匹配等串的典型算法。
二、实验内容:(给出具体的说明文字和拍摄的图片)
1.已知字符串采用顺序存储结构定义如下,请编写函数int SubString(SeqString *sub, SeqString S, int pos, int len),在字符串 s 中从第 i 个位置起取长度为 len 的子串复制到sub中,复制成功函数返回1,否则返回0。 #include \
#include \
#define MAXLEN 100
typedef struct{ char ch[MAXLEN];
int last;//指向最后一个字符的位置
} SeqString;
/*请将本函数补充完整,并进行测试*/
int SubString(SeqString *sub, SeqString s, int pos, int len) { int i;
if(pos<0||pos>s.last||len<1||len>s.last-pos) {
sub->last=0; return 0 ; } else {
for(i=0;i sub->ch[i]=s.ch[i+pos-1];//(i+pos是数组下标所以要减一) } sub->last=len; sub->ch[i]='\\0';//不能丢,会乱码,为什么?目前不清楚 //是不是len的值没赋引起的? return 1; } } void main() { SeqString sub,s; int pos,len,n; printf(\请输入一个字符串(以回车结束):\\n\ gets(s.ch); s.last=strlen(s.ch);//strlen()返回字符串的长度 printf(\请输入pos和len的值:\ scanf(\ n=SubString(&sub,s, pos, len); if(n)//n!=NULL { puts(sub.ch); } else printf(\取串不成功\\n\} /*请输入一个字符串(以回车结束): DengYuanYi 请输入pos和len的值:4 4 Yuan烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫. 会乱码的原因是需要加结束符sub->ch[i]='\\0'; 否则直到把maxsize填满 */ 2. 已知字符串采用顺序存储结构定义如下,请设计算法函数int StrDelete(SeqString *S, int pos, int len),在字符串 s 中删除从第 i 个位置开始,长度为 len 的子串,删除成功,函数返回值为1,否则为0。 #include \ #include \ #define MAXLEN 100 typedef struct { char ch[MAXLEN]; int last; } SeqString; /*请将本函数补充完整,并进行测试*/ /*函数功能:在串S中删除从序号pos起len个字符 */
相关推荐: