1 / 29
文档名称:

数据结构第si章.pptx

格式:pptx   大小:197KB   页数:29页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构第si章.pptx

上传人:wz_198613 2018/9/18 文件大小:197 KB

下载得到文件列表

数据结构第si章.pptx

文档介绍

文档介绍:第4章串(String)
串的表示和实现
串的模式匹配算法
1. 定义
2. 逻辑结构
3. 存储结构
4. 运算规则
5. 实现方式
串类型的定义
记为: s =‘ a1 , a2 , …….. , an’(n≥0 )
串名
串值(用‘’括起来)
串中字符个数(n≥0). n=0 时称为空串。
由一个或多个空格符组成的串。
串s中任意个连续的字符序列叫s的子串; S叫主串。
子串的第一个字符的序号。
字符在串中的序号。
串长度相等,且对应位置上字符相等。
串即字符串,是由零个或多个字符组成的有限序列,是数据元素为单个字符的特殊线性表。
串类型的定义
若干术语:
串长:
空白串:
子串:
子串位置:
字符位置:
串相等:
隐含结束符‘/0’,即ASCII码NUL
练1:串是由字符组成的序列,一般记为。
练2:现有以下4个字符串:
a =‘BEI’ b =‘JING’ c = ‘BEIJING’ d = ‘BEI JING’
问:①他们各自的长度?
② a是哪个串的子串?在主串中的位置是多少?
a =3,b =4,c = 7,d=8
a是c和d的子串,在c和d中的位置都是1
练3:空串和空白串有无区别?
答:有区别。空串(Null String)是指长度为零的串;而空白串(Blank String),是指包含一个或多个空白字符‘’(空格键)的字符串.
0个或多个
S=’a1a2……an’
ADT Sting{
Objects: D={ai | ai∈CharacterSet, i=1, 2,…,n, n≥0}
Relations: R1={<ai-1,ai> | ai-1,ai ∈D, i=2, …,n}
functions: // 有13种之多
StrAssign(&T, chars) // 串赋值,生成值为chars的串T
pare(S,T) // 串比较,若S>T,返回值大于0…
StrLength(S) // 求串长,即返回S的元素个数
Concat(&T, S1, S2) // 串连接,用T返回S1+S2的新串
SubString(&Sub, S, pos, len) // 求S中pos起长度为len的子串
……
Index(S, T, pos) // 返回子串T在pos之后的位置
Replace(&S, T,V) // 用子串V替换子串T
}ADT Sting
串的抽象数据类型定义(参见教材P71)
最小操作子集
设 s =’I AM A STUDENT’, t =’GOOD’, q=’WORKER’。求:
练****br/>StrLength(s) =
StrLength(t) =
SubString(s, 8, 7)=
SubString(t, 2, 1)=
Index(s, ‘A’)=
Index(s, t)=
Replace(s, ‘STUDENT’,q)=
14
4
‘STUDENT’
‘O’
3
0 ( s中没有t!)
’I AM A WORKER’
再问:Concat(SubString(s,6,2), Concat(t,SubString(s,7,8))) =?
见本章自测题, ①
串的表示和实现
定长顺序存储表示
——用一组地址连续的存储单元存储串值的字符序列
堆分配存储表示
——用一组地址连续的存储单元存储串值的字符序列,但存储空间是在程序执行过程中动态分配而得。
串的块链存储表示
——链式方式存储
首先强调:串与线性表的运算有所不同,是以“串的整体”作为操作对象,例如查找某子串,在主串某位置上插入一个子串等。
串有三种机内表示方法:
顺序存储
链式存储
定长顺序存储特点:用一组连续的存储单元来存放串,直接使用定长的字符数组来定义,数组的上界预先给出,故称为静态存储分配。
例如:
#define Maxstrlen 255 //用户可用的最大串长
typedef unsigned char SString[ Maxstrlen+1 ];
SString s; //s是一个可容纳255个字符的顺序串。
注:
一般用SString[0]来存放串长信息;
C语言约定在串尾加结束符‘\0’,以利操作加速,但不计入串长;
若字符串超过Maxstrlen 则自动截断(因为静态数组存不进去)。
讨论:想存放超长字符串怎么办?——静态数组有缺陷!
实现方式:参见教材P73编程两例,两串连接和求子串
改用动态分配的一维数组——
“堆”!
例:用顺序存储方式实现求子串函数SubString(&Sub, S, pos, len)
Status

最近更新

2024年广东省深圳市龙岗区宝龙街道办事处招聘.. 90页

2024年广东省深圳市龙岗区龙城街道办事处招聘.. 88页

2024年广东省清远市外事侨务局招聘历年高频难.. 89页

2024年广东省清远市清城区事业单位招聘23人历.. 89页

2024年广东省清远连州市扶贫办招聘6人历年高频.. 89页

2024年广东省湛江市赤坎区财政局招聘20人历年.. 89页

2024年广东省湛江市麻章区“三旧”改造办公室.. 90页

2024年广东省潮州市水务系统事业单位招聘24人.. 89页

2024年广东省潮州市纪委监委机关招聘11人历年.. 90页

2024年广东省珠海市事业单位招聘2人历年高频难.. 89页

2024年广东省珠海市招聘历年高频难、易点(公.. 89页

2024年广东省珠海市香洲区事业单位招聘24人历.. 88页

2024年广东省珠海市香洲区事业单位讲座历年高.. 90页

2024年广东省肇庆市广播电视台事业单位招聘11.. 89页

2024年广东省肇庆市水务局下属事业单位招聘8人.. 88页

2024年广东省肇庆市直事业单位招聘396人历年高.. 91页

2024年广东省肇庆市端州区委宣传部属下事业单.. 89页

2024年广东省肇庆市鼎湖区坑口街道办事处招聘.. 89页

2024年广东省肇庆高新区事业单位招聘30人历年.. 89页

2024年广东省肇庆高新区发展规划和国土资源局.. 89页

2024年广东省茂名市直属事业单位招聘305人历年.. 90页

团队演唱比赛活动方案 31页

国防教育基地建设流程 5页

月嫂的培训课件 34页

2024年全国6月安全生产月标语 7页

仓库整改计划方案仓库布局整改报告 20页

药物警戒培训管理规程 2页

(完整版)CST使用教程 23页

非计划性拔管风险评估表二实用文档 12页

安捷伦原子吸收光谱仪操作规程 1页