第4章串和数组.ppt_第1页
第4章串和数组.ppt_第2页
第4章串和数组.ppt_第3页
第4章串和数组.ppt_第4页
第4章串和数组.ppt_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、17:49:40,第4章 串和数组 String and Array (课后复习版) 主讲:顾为兵 作者声明:课件仅限本班教学参考用,不对外发布,17:49:40,第五章 串和数组(String and Array) 5.1 串的定义 5.2 串的表示与实现 5.3 模式匹配算法 5.4 数组,17:49:40,5.1 串的定义,定义:串是由n(n0)个字符组成的有限序列,记为: s=“a0a1.an-1” n-串长 空串: n=0, s“ ” 空格串: n0, s=“”,串是一种特殊的线性表-每个数据元素都是字符,17:49:40,串的基本运算: 串赋值:StrAssign( m = Str

2、length(T); i = pos; while( i=n-m ) SubString (sub, S, i, m); if ( StrCompare(Sub, T) != 0 ) i+; else return i; /匹配成功,返回子串的位置 return -1; /S中不存在与T相等的子串 ,17:49:40,每种高级语言都提供一组字符串操作函数 C语言在函数库string.h中,定义了很多字符串函数,比如: 串比较:strcmp(s1, s2), strncmp(s1, s2, len) 串复制:strcpy(s1, s2), strdup(s) 串连接:strcat(s1, s2)

3、, strncat(s1, s2, len) 串查找:strchr(s, c) 串长度:strlen(s) 。,17:49:40,第五章 串和数组(String and Array) 5.1 串的定义 5.2 串的表示与实现 5.3 模式匹配算法 5.4 数组,17:49:40,5.2 串的表示与实现 5.2.1 定长顺序存储 5.2.2 堆分配存储 5.2.3 链式存储,17:49:40,5.2.1 定长顺序存储 用定长静态数组存储串: #define maxsize 255 /串的最大长度 char s1maxsize+1; char s2100; 程序运行期间,数组的大小已经固定,不能变

4、化,17:49:40,0号单元存放串的长度,串长超过255的部分将被截断,S,串长的表达方式1:,串长的表达方式2:,用特殊的符号作为串的结束符,S,17:49:40,基本运算举例: int strlen(char *S) /求串S的长度 int n=0; char *p=S; while(*p+!=0) n+; return n; ,17:49:40,基本运算举例: void strcat(char *T, char *s1, char *s2) /将串s1和s2联结,结果存放入字符串T中 j=0; k=0; while(s1j!=0) Tk+=s1j+; /抄s1 j=0; while(s

5、2j!=0) Tk+=s2j+; /抄s2 Tj=0; 要注意字符数组的越界问题,由调用这个函数的用户来保证,17:49:40,5.2 串的表示与实现 5.2.1 定长顺序存储 5.2.2 堆分配存储 5.2.3 链式存储,17:49:40,5.2.2 堆(Heap)分配存储 运行时,用动态分配的数组来存储串。 C语言中, 用new申请,delete释放空间。 运行期间可以根据实际需要申请空间,17:49:40,基本运算举例: void strcat(char * ,17:49:40,串操作举例: StrDelete Status StrDelete(char * ,17:49:40,5.2

6、串的表示与实现 5.2.1 定长顺序存储 5.2.2 堆分配存储 5.2.3 链式存储,17:49:40,5.2.3 链式存储,head,用普通链表,存储密度低,用块链结构,操作困难,17:49:40,第五章 串和数组(String and Array) 5.1 串的定义 5.2 串的表示与实现 5.3 模式匹配算法 5.4 数组,17:49:40,5.3 朴素的模式匹配算法 Index( S, T, pos ) S-主串 T-模式串 pos-从第pos个字符开始匹配 在主串S中,自pos位置开始,查找与模式串T相等的子串。如果这样的子串存在,返回其第一次出现的位置。,17:49:40,模式串

7、T,主串S,17:49:40,模式串P,主串S,17:49:40,模式串P,主串S,17:49:40,模式串P,主串S,17:49:40,一般而言:,i+,j=0,17:49:40,P96算法5.6朴素的模式匹配算法 int Index(char *S, char *T, int pos) /检测主串S在位置pos之后是否存在与T相同的子串 /存在,则返回该子串的位置;否则,返回1 int i=pos, j=0; while(Si+j ,17:49:40,朴素算法的时间分析: 最好的情形:每次都是在j0时失配, 如,设在第 i 个位置上匹配成功,共进行了i+m次比较;i的可能取值范围是0.n-m, 故平均比较次数为: 时间复杂度为O(n+m),主串,模式串,前i1次匹配进行了i1次比较;第i次匹配进行了m次比较,长度n,长度m,17:49

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论