数据结构-串实验报告.docVIP

  • 222
  • 0
  • 约8.77千字
  • 约 13页
  • 2016-09-01 发布于重庆
  • 举报
数据结构-串实验报告

实验报告 课程 数据结构 实验名称 实验三 串 学号 姓名 实验日期: 2011/10/27 实验三 串 实验目的: 1. 熟悉串类型的实现方法,了解简单文字处理的设计方法; 2. 熟悉C语言的字符和把字符串处理的原理和方法; 3. 熟悉并掌握模式匹配算法。 顺序存储结构下的关于字符串操作的基本算法。 模式匹配算法BF、KMP 4-19. 在4.4.3节例4-6的基础上,编写比较Brute-Force算法和KMP算法比较次数的程序。 4-20. 设串采用静态数组存储结构,编写函数实现串的替换Replace(S,start,T,V),即要求在主串S中,从位置start开始查找是否存在字串T。若主串S中存在子串T,则用子串V替换子串T,且函数返回1;若主串S中不存在子串T,则函数返回0;并要求设计主函数进行测试。一个测试例子为:S=“I am a student”,T=“student”,V=“teacher”。/*静态存储结构*/typedef struct { char str[MaxSize]; int length; } String; void Initiate(String *S) { S-length=0; } int Insert(String *S, int pos, String T) /*在串S的pos位置插入子串T*/ { int i; if(pos 0) { printf(参数pos出错!); return 0; } else if(S-length + T.length MaxSize) { printf(数组空间不足无法插入!); return 0; } else { for(i = S-length-1; i = pos; i--) S-str[i+T.length] = S-str[i]; /*为插入做准备*/ for(i = 0; i T.length; i++) S-str[pos+i] = T.str[i]; /*插入*/ S-length += T.length; /*产生新的元素个数*/ return 1; } } int Delete(String *S, int pos, int len) { int i; if(S-length = 0) { printf(数组中未存放字符无元素可删! \n); return 0; } else if(pos 0 || len 0 || pos+len S-length) { printf(参数pos和len出错); return 0; } else { for(i = pos+len; i = S-length-1; i++) S-str[i-len] = S-str[i]; /*依次前移*/ S-length -= len; /*产生新的长度值*/ return 1; } } int SubString(String S, int pos, int len, String *T) { int i; if(pos 0 || len 0 || pos+len S.length) { printf(参数pos和len出错); return 0; } else { for(i = 0; i len; i++) T-str[i] = S.str[pos+i]; /*给子串T赋值*/ T-length = len; /*给子串T的长度域赋值*/ return 1; } } (2) BFandKMP.h /*查找子串BF(Brute-Force)操作*/int BFIndex(String S,int start,String T) { int i=start,j=0,v; while(iS.lengthjT.length) { if(S.str[i]==T.str[j]) { i++; j++; } else { i=i-j+1; j=0; } } if(j==T.length) v=i-T.length; else v=-1; return v; } int KMPIndexA(

文档评论(0)

1亿VIP精品文档

相关文档