数据结构C语言版第四章课件严蔚敏.pptx
《数据结构C语言版第四章课件严蔚敏.pptx》由会员分享,可在线阅读,更多相关《数据结构C语言版第四章课件严蔚敏.pptx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.1 串类型的定义 1.基本概念基本概念l串串(字字符符串串)String:是是零零个个或或多多个个字字符符组组成成的的有有限限序序列列。一般记为:一般记为:S=a1a2.an(n0)栈、队列:操作受限的线性表。栈、队列:操作受限的线性表。串:取值范围受限的线性表,数据对象约束为字符集。串:取值范围受限的线性表,数据对象约束为字符集。其其中中S是是串串的的名名字字,用用单单引引号号括括起起来来的的字字符符序序列列是是串串的的值值,ai(1in)可以是字母、数字或其它字符。可以是字母、数字或其它字符。l串的长度:串中字符的个数串的长度:串中字符的个数n。l空空串串(Null String):n
2、=0时时的的串串称称为为空空串串,用用符符号号“”表示表示 。第1页/共36页l子串:串中任意个连续的字符组成的子序列称为该串的子 串。“”为任意串的子串。l主串:包含子串的串相应地称为主串。第2页/共36页l位置:字符在串中的序号称为该字符在串中的位置。子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。A=China Beijing,B=Beijing,C=China,则它们的长度分别为13、7和5。B和C是A的子串,B在A中的位置是7,C在A中的位置是1。l串相等:当且仅当两个串的值相等时,称这两个串是相等的,即只有当两个串的长度相等,并且每个对应位置的字符都相等时才相等。l空格
3、串:由一个或多个空格组成的串。与空串不同。第3页/共36页串的基本操作和线性表区别很大。线性表:大多以“单个元素”为操作对象串:通常以“串的整体”为操作对象例,查找某个元素;插入某个元素;删除某个元素例,查找某个子串;截取某个子串;在某个位置插入、删除某个子串串的逻辑结构和线性表相似,故看作一种线性表。s=a1a2 an (n0)第4页/共36页2.串的基本运算:l 串赋值StrAssign(&T,chars)初始条件:chars是字符串常量。操作结果:生成一个值等于chars的串T。l 串比较StrCompare(S,T)初始条件:串S和T存在。操作结果:若ST,则返回值0;如S=T,则返回
4、值=0;若ST,则返回值0。l 求串长StrLength(S)初始条件:串S存在。操作结果:返回串S的长度,即串S中的元素个数。第5页/共36页l 串联接Concat(&T,S1,S2)初始条件:串S1和S2存在。操作结果:将T返回由S1和S2联接而成的新串。l 求子串SubString(&Sub,S,pos,len)初始条件:串S存在,1posStrLength(S)且 1lenStrLength(S)-pos+1。操作结果:用Sub返回串S的第pos个字符起长度为len的 子串。第6页/共36页4.2 串的表示和实现 定长顺序存储表示顺序存储 堆分配存储表示顺序存储 块链存储表示链式存储第
5、7页/共36页1.定长顺序存储表示(定长顺序串)define MAXSTRLEN 255 typedef unsigned char SStringMAXSTRLEN+1;l定长顺序串的存储分配是在编译时完成的。与前面所讲的线性表的顺序存储结构类似,用一组地址连续的存储单元存储串的字符序列。l超出予定义长度的串值被舍去,称之为“截断”。012255第8页/共36页串长的表示:以下标为0的数组分量存放串的实际长度;串值后加入一个不计入串长的结束标记字符,C中“0”表串值的终结,其ASC码值为0。第9页/共36页算法4.2 串联接 strcat(&T,S1,S2)要求:顺序联接串 S1 和串 S2
6、 得到新串 T。思想:基于串S1和S2长度的不同情况,串T可能出现3种情况:S10+S20MAXSTRLEN,S10+S20MAXSTRLENS10MAXSTRLEN,S10MAXSTRLEN,直接联接,T0MAXSTRLEN;截断S2,联接,T0MAXSTRLEN;T S1;第10页/共36页1255S101255T0T0=S10+S201255S20S10+S20MAXSTRLEN第11页/共36页1255S10S10+S20MAXSTRLEN,S10MAXSTRLEN1255T0 255-S101255S20 255-S10T0MAXSTRLEN第12页/共36页2.堆分配存储表示(堆串
7、)在C语言中,已经有一个称为“堆”的自由存储空间,并可用malloc()和free()函数完成动态存储管理。typedef struct char *ch;int length;HString;应用程序用到的内存分配:栈分配和堆分配。堆:用户程序动态申请的地址空间。栈:保存函数参数和块内局部变量的内存区。void Fun1()void Fun2()int i;int*p=new int10;char p10;.;delete p;.;第13页/共36页3.串的块链存储表示(链串)define CHUNKSIZE typedef struct Chunk char chCHUNKSIZE;str
8、uct Chunk *next;Chunk;typedef struct Chunk *head;Chunk *tail;int curlen;LString;第14页/共36页l存储密度大,一些操作(如插入,删除)有所不便,引起大量字符移动,适合于在串基本保持静态使用方式时采用;l存储密度小,运算处理方便,但存储空间量大,若处理过程中,需大量内外存交换,会影响总效率;l串的字符集的大小,也会影响串值存储方式的选取。第15页/共36页l作业:4.14.18第16页/共36页1.朴素模式匹配算法(Brute-Force算法)求子串位置的定位函数Index(S,T,pos).l模式匹配:子串的定位
9、操作通常称作串的模式匹配。l目标串:主串S。l模式串:子串T。l匹配成功:若存在T的每个字符依次和S中的一个连续字符序列相等,则称匹配成功。返回T中第一个字符在S中的位置。l匹配不成功:返回0。4.3 串的模式匹配算法第17页/共36页lBrute-Force简称为BF算法,亦称简单匹配算法,其基本思路是:从目标串s=“s1s2sn”的第一个字符开始和模式串t=“t1t2tm”中的第一个字符比较,若相等,则继续逐个比较后续字符;否则从目标串s的第二个字符开始重新与模式串t的第一个字符进行比较。依次类推,若从目标串s的第i个字符开始,每个字符依次和模式串t中的对应字符相等,则匹配成功,该算法返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 语言版 第四 课件 严蔚敏
限制150内