成都信息工程学院:《数据结构》课程教学资源(讲稿)第四章 串

第四章串 串的定义 串的操作 41串的定义 据 串:由零个或多个字符组成的有限序列, 构 记为S=“a 主串、子串、串名、串长; S=“ How are you, everybody!” >空串、空格串; 字符在串中的位置、子串在串中的位置; 两个串相等当且仅当两个串值相等,即 长度,位置相等;
1 第四章 串 串的定义 串的操作 数 据 结 构 之 串 2 4.1 串的定义 ¾ 串:由零个或多个字符组成的有限序列, 记为S= “a1a2a3……an ”。 ¾ 主串、子串、串名、串长; S=“How are you,everybody!” ¾ 空串、空格串; ¾ 字符在串中的位置、子串在串中的位置; ¾ 两个串相等,当且仅当两个串值相等,即 长度,位置相等;

42串的基本操作 据结构 StrAssign(&t, chars StrCompare(S,T):S、T相等返回rue,否则返 回fa Strength(S):求串中字符的个数; Con Cat(S,T):将串T的值紧接着放在串S的末尾 组成一个新串; Substring(Sub,s,star, ,ength):求S从 start位置开 始,长度为 length的子串; 据 SetEmpty(&T):设置空串 构> StrCopy(s,T):把T值赋给S Index(S,T,pos):求子串在主串中位置的定位函数; Replace(S,T,v):以v替换所有在S中出现的和T相 等的串; Strlnsert(S,Pos,T):在串S的第Pos个字符之前插 入串T; StrDelete(S,Pos,len):从串S中删除Pos个字符起 长度为len的子串;
2 数 据 结 构 之 串 3 4.2 串的基本操作 ¾ StrAssign(&T,chars) ¾ StrCompare(S,T): S、T相等返回true,否则返 回faule; ¾ StrLength(S) : 求串中字符的个数; ¾ ConCat(S,T) : 将串T的值紧接着放在串S的末尾, 组成 一个新串; ¾ SubString(Sub,S,start,length): 求S从start位置开 始,长度为 length 的子串; 数 据 结 构 之 串 4 ¾ SetEmpty(&T) : 设置空串 ¾ StrCopy(S,T): 把T值赋给S; ¾ Index(S,T,pos): 求子串在主串中位置的定位函数; ¾ Replace(S,T,v): 以v替换所有在S中出现的和T相 等的串; ¾ StrInsert(S,Pos,T): 在串S的第Pos个字符之前插 入串T; ¾ StrDelete(S,Pos,len): 从串S中删除Pos个字符起 长度为len的子串;

43串的表示和实现 撒>定长顺序存储表示 结 紧缩格式:在一个存储单元中存放多个字符 非紧缩格式:一个存储单元中只存放一个字符, 所需存储单元个数即串的长度 例:如一个单元存放k个字符,长度为n,则此 串值占[n/k]个存储单元 DA|T|A一个存储单元 TR UCTU FES 据动态分配串值的存储空间 构 动态串的类型定义 typedef struct( char * ch int ength;∥/串的长度 JHS;
3 数 据 结 构 之 串 5 4.3 串的表示和实现 ¾ 定长顺序存储表示 ¾ 紧缩格式:在一个存储单元中存放多个字符 ¾ 非紧缩格式:一个存储单元中只存放一个字符, 所需存储单元个数即串的长度 例:如一个单元存放k个字符,长度为n,则此 串值占[n/k]个存储单元。 D T A : S A D TA A W TR S U TU C F S E 一个存储单元 数 据 结 构 之 串 6 ¾ 动态分配串值的存储空间; ¾ 动态串的类型定义: typedef struct{ char *ch ; int length; //串的长度 }HS;

>串的链式存储 #define CHUNKsIZe 80 /由用户定义的块长度 数据结构 typedef struct Chunk i har ch( CHUNKSIZE;/字符串块 struct chunk *next;/指向下一个字符串块 3 Chunk; /结构名称 typedef struct i Chunk“head,“tail;/指向头尾的指针 nt curlen /串的当前长度* 3 STring; /串名称 一 ABCDEFG1## FA叶c >串基本操作的实现 将串S1和串S2联接成新串 构 算法描述 给T分配存储空间,存储空间大小为S1和S2长度 之和。 将S1中的每一个字符拷贝到T中。 修改T的长度 将S2中的所有字符拷贝到T剩余的存储空间中。 返回。 程序如下:
4 数 据 结 构 之 串 7 ¾ 串的链式存储 #define CHUNKSIZE 80 /*由用户定义的块长度*/ typedef struct Chunk { char ch[CHUNKSIZE]; /*字符串块*/ struct Chunk *next; /*指向下一个字符串块*/ }Chunk; /*结构名称*/ typedef struct { Chunk *head, *tail; /*指向头尾的指针*/ int curlen; /*串的当前长度*/ } LString; /*串名称*/ F A B C 1 ^ A B C D E F G H 1 # # # ^ F 数 据 结 构 之 串 8 ¾ 串基本操作的实现 ¾ 将串S1和串S2联接成新串 ¾算法描述: ¾给T分配存储空间,存储空间大小为S1和S2长度 之和。 ¾将S1中的每一个字符拷贝到T中。 ¾修改T的长度。 ¾将S2中的所有字符拷贝到T剩余的存储空间中。 ¾返回。 ¾程序如下:

Status Concat(Hstring T, Hstring SI, Hstring S2)( 据ifT.ch)free.h;/如果T.ch非空,则释放其存储空间 I* if( (T ch=(char*)malloc(S1. length+S2. length+1)*sizeof(char)) 构分配空间 return OVErFlow;/若分配失败,则返回溢出信息* for(count=0; count<sl length; count++) Tch count=Slch| count];/将S中字符拷贝到T中* T. ength=SI length+S2. length; /修改长度 for(count-SI.length; count<Tlength; count++) Tch| count=S2 ch count- Sl length;/将S2中所有字符 拷贝到T中* TchIT.ength=“0; return OK;/返回*/} 求子串T在主串S中的位置 据 算法思想:从主丰S的第一个字符 构 起和模式串(子串)的第一个字符 比较,相等则继续,否则从主串的 第二个字符起重新和模式比较,直 至比较完毕为止。 图示 S=“ a babcabcac bab T=“ab
5 数 据 结 构 之 串 9 Status Concat(Hstring T, Hstring S1, Hstring S2){ int count; if(T.ch) free(T.ch); /*如果T.ch非空,则释放其存储空间*/ if(!(T.ch=(char *)malloc(S1.length+S2.length+1)*sizeof(char)))) /*分配空间*/ return OVERFLOW; /*若分配失败,则返回溢出信息*/ for(count=0;count<S1.length;count++) T.ch[count]=S1.ch[count]; /*将S1中字符拷贝到T中*/ T.length=S1.length+S2.length; /*修改长度*/ for(count=S1.length;count<T.length;count++) T.ch[count]=S2.ch[count- S1.length]; /*将S2中所有字符 拷贝到T中*/ T.ch[T.length] = ‘\0’; return OK; /*返回*/ } 数 据 结 构 之 串 10 ¾ 求子串T在主串S中的位置 ¾算法思想:从主串S的第一个字符 起和模式串(子串)的第一个字符 比较,相等则继续,否则从主串的 第二个字符起重新和模式比较,直 至比较完毕为止。 ¾图示 S = “a b a b c a b c a c b a b” T = “a b c a c

第一趟匹配 a babcabcac bab 结 第二趟匹配 ba bca bcac ba b 第三趟匹配 a babcabcac b 第四趟匹配 a ba bcabcac bab 据 构 第五趟匹配: a babcabcac bab 第六趟匹配:
6 数 据 结 构 之 串 11 第一趟匹配: a b a b c a b c a c b a b a b c j=3 i=3 第二趟匹配: a b a b c a b c a c b a b a j=1 i=2 第三趟匹配: a b a b c a b c a c b a b a b c a c j=5 i=7 数 据 结 构 之 串 12 第四趟匹配: a b a b c a b c a c b a b a j=1 i=4 第五趟匹配: a b a b c a b c a c b a b a j=1 i=5 第六趟匹配: a b a b c a b c a c b a b a b c a c j=6 i=11

数据结构 int Index(Hs S, Hs T, int pos)t k=i=pos-1; j=0; while(kTlength) return(i+1 ) else return(0); 13 >模式匹配的KMP算法 构 请同学们参照演示程序和教材 中的相关内容进行钻研 14
7 数 据 结 构 之 串 13 int Index(HS S , HS T , int pos) { k= i = pos-1 ; j=0; while(kT.length) return ( i+1 ); else return (0); } 数 据 结 构 之 串 14 ¾ 模式匹配的KMP算法 请同学们参照演示程序和教材 中的相关内容进行钻研

串的算法练习 银1完成动态串的基本操作,page71; A 2 Status StrInsert( HS &S, int pos, HS T)C 3. Status StrDelete(hs &s, int pos, int len, HS &T) 数据结构 本章重点 串的基本概念 串的基本操作 串的查找
8 数 据 结 构 之 串 15 串的 算法练习 1.完成动态串的基本操作,page 71; 2. Status StrInsert( HS &S , int pos , HS T){ ……. } 3. Status StrDelete(HS &S,int pos,int len,HS &T) { ……. } 数 据 结 构 之 串 16 ¾ 本章重点 ¾ 串的基本概念 ¾ 串的基本操作 ¾ 串的查找
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 成都信息工程学院:《数据结构》课程教学资源(讲稿)第三章 栈和队列.pdf
- 成都信息工程学院:《数据结构》课程教学资源(讲稿)第二章 线性表.pdf
- 成都信息工程学院:《数据结构》课程教学资源(讲稿)第五章 数组和广义表.pdf
- 成都信息工程学院:《数据结构》课程教学资源(讲稿)C语言复习.pdf
- 成都信息工程学院:《数据结构》课程教学资源(讲稿)第一章 绪论(徐虹).pdf
- 河海大学:《大学计算机信息技术》课程教学资源(PPT课件讲稿)第一章 信息技术概述(马亚生).ppt
- 中南大学:《人工智能》第一章 绪论.ppt
- 中南大学:《人工智能》第五章 计算智能(2).ppt
- 中南大学:《人工智能》第四章 计算智能(1).ppt
- 中南大学:《人工智能》第十章 机器视觉.ppt
- 中南大学:《人工智能》第十一章 自然语言理解.ppt
- 中南大学:《人工智能》第十三章 人工智能的争论与展望.ppt
- 中南大学:《人工智能》第十二章 智能控制.ppt
- 中南大学:《人工智能》第三章 搜索推理技术.ppt
- 中南大学:《人工智能》第七章 机器学习.ppt
- 中南大学:《人工智能》第八章 机器人规划.ppt
- 中南大学:《人工智能》第九章 Agent(艾真体).ppt
- 中南大学:《人工智能》第二章 知识表示方法.ppt
- 中南大学:《人工智能》第六章 专家系统.ppt
- 《计算机维护与维修》第9章 计算机病毒的防治.pps
- 成都信息工程学院:《数据结构》课程教学资源(讲稿)第七章 图.pdf
- 成都信息工程学院:《数据结构》课程教学资源(讲稿)第六章 树和二叉树.pdf
- 成都信息工程学院:《数据结构》课程教学资源(讲稿)第十章 排序.pdf
- 成都信息工程学院:《数据结构》课程教学资源(讲稿)第九章 查找.pdf
- 《高级AutoCAD绘图技巧》讲义.doc
- 上海理工大学:《电子商务基础与应用》课程教学资源(PPT课件)第十章 电子支付.ppt
- 上海理工大学:《电子商务基础与应用》课程教学资源(PPT课件)第四章 电子商务网站建设.ppt
- 《数据库技术》第6章 数据库设计.ppt
- 《数据库技术》第5章 完整性约束与模式分解.ppt
- 《数据库技术》第3章 关系模型.ppt
- 《数据库技术》第4章 SQL.ppt
- 《数据库技术》第9章 查询处理.ppt
- 《数据库技术》第10章 事务.ppt
- 《数据库技术》第12章 数据库系统的体系结构.ppt
- 《数据库技术》复习大纲.ppt
- 《电脑组装与维护技术培训教程》教学资源(PPT电子教案)第10章 分区格式化.ppt
- 《电脑组装与维护技术培训教程》教学资源(PPT电子教案)第11章 操作系统的安装.ppt
- 《电脑组装与维护技术培训教程》教学资源(PPT电子教案)第12章 克隆大师和分区魔术师的应用.ppt
- 《电脑组装与维护技术培训教程》教学资源(PPT电子教案)第13章 电脑的日常维护与保养.ppt
- 《电脑组装与维护技术培训教程》教学资源(PPT电子教案)第14章 电脑故障检修.ppt