《严蔚敏数据结构》PPT课件.ppt
《《严蔚敏数据结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《严蔚敏数据结构》PPT课件.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 串(串(String)4.1 4.1 串类型的定义串类型的定义4.2 4.2 串的表示和实现串的表示和实现4.3 4.3 串的模式匹配算法串的模式匹配算法1记为:记为:s=a1 a2.an (n0)串名串名串值(用串值(用 括起来)括起来)串串即字符串,是由零个或多个字符组成的即字符串,是由零个或多个字符组成的有限有限序列,序列,是是数据数据 元素为单个字符元素为单个字符的特殊线性表。的特殊线性表。4.1 4.1 串类型的定义串类型的定义隐含结束符隐含结束符0 0,即,即ASCIIASCII码码NULLNULL为何要单独讨论为何要单独讨论“串串”类型?类型?1 1)字符串操作比其他
2、数据类型更复杂(如拷贝、连接操作)字符串操作比其他数据类型更复杂(如拷贝、连接操作)2 2)程序设计中,处理对象很多都是串类型。程序设计中,处理对象很多都是串类型。2若干术语:若干术语:串长:串长:串中字符的个数(串中字符的个数(n0n0).n=0.n=0 时称为空串时称为空串 。空白串:空白串:由一个或多个由一个或多个空格符空格符组成的串。组成的串。问:空串和空白串有无区别?问:空串和空白串有无区别?答:答:有区别。有区别。空串空串(Null String)(Null String)是指长度为零的串;是指长度为零的串;而空白串而空白串(Blank String),(Blank String)
3、,是指包含一个或多是指包含一个或多个空白字符个空白字符 (空格键空格键)的字符串的字符串.3 子串:子串:子串位置:子串位置:字符位置:字符位置:串相等:串相等:例例1:现有以下现有以下4个字符串:个字符串:a=BEI b=JING c=BEIJING d=BEI JING问:问:他们各自的长度?他们各自的长度?a是是c和和d的子串,在的子串,在c和和d中的位置都是中的位置都是1串串S S中中任意个连续的字符任意个连续的字符序列叫序列叫S S的子串的子串;S;S叫叫主串主串。子串的第一个字符在主串中的序号。子串的第一个字符在主串中的序号。字符在串中的序号。字符在串中的序号。串长度相等,且对应位
4、置上字符相等。串长度相等,且对应位置上字符相等。a是哪个串的子串?在主串中的位置是多少?是哪个串的子串?在主串中的位置是多少?a=3,b=4,c=7,d=8“空串是任意串的子串;任意串空串是任意串的子串;任意串S S都是都是S S本身的子串,除本身的子串,除S S本身本身外,外,S S的其他子串称为的其他子串称为S S的的真子串真子串。”数据结构与算法中山大学出版社数据结构与算法中山大学出版社 空串是哪个串的子串?空串是哪个串的子串?a是不是自己的子串?是不是自己的子串?4C语言中已有类似串运算函数!语言中已有类似串运算函数!ADT StringObjects:D=ai|aiCharacter
5、Set,i=1,2,,n,n0Relations:R1=|ai-1,ai D,i=2,,nfunctions:/至少有至少有1313种基本操作种基本操作StrAssign(&T,chars)/串赋值串赋值,生成值为,生成值为charschars的串的串T TStrCompare(S,T)/串比较串比较,若,若STST,返回值大于,返回值大于00 StrLength(S)/求串长求串长,即返回串,即返回串S S中的元素个数中的元素个数 Concat(&T,S1,S2)/串连接串连接,用,用T T返回返回S1S1S2S2的新串的新串 SubString(&Sub,S,pos,len)/求求S S中
6、中pospos起长度为起长度为lenlen的的子串子串 Index(S,T,pos)/子串定位函数(模式匹配),子串定位函数(模式匹配),返回位置返回位置 Replace(&S,T,V)/用子串用子串V V替换替换子串子串T TADT String串的抽象数据类型定义串的抽象数据类型定义(参见教材(参见教材P71P71)最最小小操操作作子子集集5注:注:ConcatConcat操作操作concatenationconcatenation,把,把多个短字符串合并为长字符串多个短字符串合并为长字符串复习:复习:C语言中常用的串运算语言中常用的串运算 C C串比较串比较:int strcmp(cha
7、r*s1,char*s2);求串长:求串长:int strlen(char*s);串连接:串连接:char strcat(char*to,char*from)子串子串T T定位:定位:char strchr(char*s,char*c);注:用注:用C处理字符串时,要调用标准库函数处理字符串时,要调用标准库函数#include 类类CStrCompare(S,T)StrLength(S)Concat(&T,S1,S2)Index(S,T,pos)6Replace(&S,T,V)/用子串用子串V V替换子串替换子串T T 设设 s=I AM A STUDENT,t=GOOD,q=WORKER。求
8、:。求:例例1: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 /参见参见P714STUDENTO30 (s中没有中没有t=GOOD!)!)Index(S,T,pos)/返回子串返回子串T T在在pospos之后的位置之后的位置I AM A WORKER7提问:提问:当当s=I AM A STUDENTs=I AM A STUDENT时时,INDEXINDEX(s,As,A,pospos)=3=3,若想搜索后面那个
9、,若想搜索后面那个AA怎么办?怎么办?答答:根据根据教材教材P71P71倒倒1 1行行的函数说明,的函数说明,INDEXINDEX(s,As,A)返回的只是返回的只是“第一次第一次”出现的位置。出现的位置。如果还要搜索后面的如果还要搜索后面的A A,则,则pospos变量要跟着变才变量要跟着变才行。行。也就是说,要把得到的也就是说,要把得到的“第一次第一次”位置再代入位置再代入INDEXINDEX(s,As,A,pospos)函数中循环操作才行。)函数中循环操作才行。8解:因为解:因为SubString(s,6,2)A;SubString(s,7,8)STUDENTConcat(,t,SubS
10、tring(s,7,8)GOOD STUDENT所以:所以:Concat(,SubString(s,6,2),Concat(t,SubString(s,7,8)A GOOD STUDENT例例2:设设 s=I AM A STUDENT,t=GOOD,求:求:Concat(SubString(s,6,2),Concat(t,SubString(s,7,8)?94.2 串的表示和实现串的表示和实现定长顺序存储表示定长顺序存储表示用一组地址连续的存储单元存储串值的字用一组地址连续的存储单元存储串值的字符序列,属符序列,属静态存储静态存储方式。方式。堆分配存储表示堆分配存储表示用一组地址连续的存储单元
11、存储串值的字用一组地址连续的存储单元存储串值的字符序列符序列,但存储空间是在程序执行过程中但存储空间是在程序执行过程中动态动态分配分配而得。而得。串的块链存储表示串的块链存储表示链式方式存储链式方式存储首先强调:首先强调:串与线性表的运算有所不同,是以串与线性表的运算有所不同,是以“串的整体串的整体”作作为操作对象,例如查找某子串,在主串某位置上插入一个子串为操作对象,例如查找某子串,在主串某位置上插入一个子串等。等。串有三种机内表示方法:串有三种机内表示方法:顺序顺序存储存储链式链式存储存储10定长顺序存储特点:定长顺序存储特点:用一组连续的存储单元来存放串,用一组连续的存储单元来存放串,直
12、接使用定长的字符数组来定义,数组的直接使用定长的字符数组来定义,数组的上界预先给出上界预先给出,故称为故称为静态存储静态存储分配。分配。例如:例如:#define Maxstrlen 255 /用户可用的最大串长用户可用的最大串长 typedef unsigned char SString Maxstrlen1 SString;/P73 SString s;/s 是一个可容纳是一个可容纳255个字符的顺序串。个字符的顺序串。注:注:一般用一般用SString0来存放来存放串长串长信息(如信息(如pascal语言);语言);C语言约定在串尾加结束符语言约定在串尾加结束符 0,以利操作加速,但不,
13、以利操作加速,但不计入串长计入串长(用首址和串长、或首址和尾标记来描述串数组)(用首址和串长、或首址和尾标记来描述串数组)若字符串超过若字符串超过Maxstrlen 则自动截断则自动截断(因为静态数组存不(因为静态数组存不 进去)。进去)。11例:例:用用顺序存储方式顺序存储方式编写编写求子串函数求子串函数SubString(SubString(&Sub,S,pos,len)Sub,S,pos,len)Status SubString(SString&sub,SString S,int pos,int len)if(posS0|lenS0-pos+1)return ERROR;/若若pospo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 严蔚敏数据结构 严蔚敏 数据结构 PPT 课件
限制150内