数据结构4串.ppt
《数据结构4串.ppt》由会员分享,可在线阅读,更多相关《数据结构4串.ppt(26页珍藏版)》请在课桌文档上搜索。
1、第4章 串(String),2023/3/2,1,4.1 串类型的定义4.2 串的表示和实现4.3 串的模式匹配算法,2023/3/2,2,记为:s=a1 a2.an(n0),串即字符串,是由零个或多个字符组成的有限序列,是数据元素为单个字符的特殊线性表。,4.1 串类型的定义,隐含结束符0,即ASCII码NULL,为何要单独讨论“串”类型?1)字符串操作比其他数据类型更复杂(如拷贝、连接操作)2)程序设计中,处理对象很多都是串类型。,若干术语:,2023/3/2,3,串长:串中字符的个数(n0).n=0 时称为空串。空格串:由一个或多个空格符组成的串。,问:空串和空格串有无区别?答:有区别。
2、空串(Null String)是指长度为零的串;而空格串(Blank String),是指包含一个或多个空白字符(空格键)的字符串.,2023/3/2,4,子串:子串位置:字符位置:串相等:,例1:现有以下4个字符串:a=BEI b=JING c=BEIJING d=BEI JING,问:他们各自的长度?,a是c和d的子串,在c和d中的位置都是1,串S中任意个连续的字符序列叫S的子串;S叫主串。子串的第一个字符在主串中的序号。字符在串中的序号。串长度相等,且对应位置上字符相等。,a是哪个串的子串?在主串中的位置是多少?,a=3,b=4,c=7,d=8,“空串是任意串的子串;任意串S都是S本身的
3、子串,除S本身外,S的其他子串称为S的真子串。”数据结构与算法中山大学出版社,空串是哪个串的子串?a是不是自己的子串?,串的抽象数据类型定义(参见教材P71),2023/3/2,5,C语言中已有类似串运算函数!,ADT StringObjects:D=ai|aiCharacterSet,i=1,2,,n,n0Relations:R1=|ai-1,ai D,i=2,,nfunctions:/至少有13种基本操作StrAssign(&T,chars)/串赋值,生成值为chars的串TStrCompare(S,T)/串比较,若ST,返回值大于0 StrLength(S)/求串长,即返回串S中的元素个
4、数 Concat(&T,S1,S2)/串连接,用T返回S1S2的新串 SubString(&Sub,S,pos,len)/求S中pos起长度为len的子串 StrCopy(&T,S)/由串S复制得到T Index(S,T,pos)/子串定位函数(模式匹配),返回位置 Replace(&S,T,V)/用子串V替换子串TADT String,最小操作子集,复习:C语言中常用的串运算,2023/3/2,6,C串比较:int strcmp(char*s1,char*s2);求串长:int strlen(char*s);串连接:char strcat(char*to,char*from)子串T定位:ch
5、ar strchr(char*s,char*c);参考C语言书,注:用C处理字符串时,要调用标准库函数#include,类CStrCompare(S,T)StrLength(S)Concat(&T,S1,S2)Index(S,T,pos),2023/3/2,7,例如:可利用串比较、求串长和求子串等操作实现定位函数Index(S,T,pos).,算法基本思想:在主串S中取从第i(i=pos)个字符起,取长度和串T相等的子串和串T比较,若相等,则返回值为i否则i+,直到S中不存在和T相等的子串为止。,StrCompare(SubString(S,i,StrLength(T),T)=?0,2023/
6、3/2,8,Int Index(String S,String T,int pos)/T为非空串,若主串S中第pos个字符之后存在与T相等的子串,/则返回第一个这样的子串在S中的位置,否则返回0;if(pos0)n=StrLength(S);m=StrLength(T);i=pos;while(i=n-m+1)if(StrCompare(SubString(S,i,m),T)!=0)+i;else return i;/while/if/Index(),sub,sub,S,n,m,m,i=pos,n-m+1,sub,i,T,T,T,例1:,设 s=I AM A STUDENT,t=GOOD,q=
7、WORKER。求:,2023/3/2,9,Replace(&S,T,V)/用子串V替换子串T,StrLength(s)StrLength(t)SubString(&sub,s,8,7)=SubString(&sub,t,2,1)=Index(s,A)=Index(s,t)=Replace(&s,STUDENT,q)=,14/参见P714STUDENTO,30(s中没有t=GOOD!),Index(S,T,pos)/返回子串T在pos之后的位置,I AM A WORKER,例2:设 s=I AM A STUDENT,t=GOOD,求:Concat(SubString(s,6,2),Concat(
8、t,SubString(s,7,8)?,2023/3/2,10,解:因为SubString(s,6,2)A;SubString(s,7,8)STUDENTConcat(t,SubString(s,7,8)GOOD STUDENT所以:Concat(,SubString(s,6,2),Concat(t,SubString(s,7,8)A GOOD STUDENT,串的特点:,串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集;串的基本操作和线性表差别很大 串的基本操作中,通常以“串的整体”作为操作对象。,2023/3/2,11,4.2串的表示和实现,2023/3/2,12,定长顺序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构

链接地址:https://www.desk33.com/p-229792.html