串的抽象数据类型ADT 定义串的一些操作
来源:互联网 发布:激活码网站源码 编辑:程序博客网 时间:2024/05/22 12:56
串的逻辑结构和线性表很相似,不同之处在于串针对的是字符集,也就是串中的元素都是字符,哪怕串中的字符是“123”这样的数字组成,或者“2010-10-1CT这 样的日期组成,它们都只能理解为长度为3和长度为10的字符串,每个元素都是字符而已。
因此,对于串的基本操作与线性表是有很大差别的。线性表更关注的是单个元素的操作,比如査找一个元素,插入或删除一个元素,但串中更多的是査找子串位置、得到指定位置子串、替换子串等操作。
为了更加深入地了解串这个数据结构,我们需要定义串的ADT,然后再实现串的一些常见操作。串的ADT定义如下:
01
ADT 串 (String)
02
03
Data
04
串中的元素仅由一个字符组成,相邻元素具有前驱和后继关系.
05
06
Operation
07
StrAssign (&T, chars)
08
初始条件:chars是字符串常量。
09
操作结果:生成一个其值等于chars的串T。
10
StrCopy (&T, S)
11
初始条件:串S存在。
12
操作结果:由串S复制得串T。
13
StrEmpty(S)
14
初始条件:串S存在。
15
操作结果:若S为空串,则返回TRUE,否则返回FALSE。
16
StrCompare(S, T)
17
初始条件:串S和T存在。
18
操作结果:若S>T,则返回值>0;若S=T,则返回值=0;若S < T,则返回值 < 0。
19
StrLength(S)
20
初始条件:串S存在。
21
操作结果:返回S的元素个数,称为串的长度。
22
ClearString (&S)
23
初始条件:串S存在。
24
操作结果:将S清为空串。
25
Concat (&T, S1, S2)
26
初始条件:串S1和S2存在。
27
操作结果:用T返回由S1和S2联接而成的新串。
28
SubString(&Sub, S, pos, len)
29
初始条件:串S存在,1≤pos≤StrLength(S)且0≤len≤StrLength(S)-pos+1
30
操作结果:用Sub返回串S的第pos个字符长度为len的子串。
31
Index(S, T, pos)
32
初始条件:串S和T存在,T是非空串,1≤pos≤StrLength(S)。
33
操作结果:若主串S中存在和串T值相同的子串,则返回它在主串S中第pos个字符之后第一次出现的位置;否则函数值为0。
34
Replace (&S, T, V)
35
初始条件:串S, T和V存在,T是非空串。
36
操作结果:用V替换主串S中出现的所有与T相等的不重叠的子串。
37
StrInsert (&S, pos, T)
38
初始条件:串S和T存在, 1≤pos≤StrLength(S)+1。
39
操作结果:在串S的第pos个字符之前插入串T。
40
StrDelete (&S, pos, len)
41
初始条件:串S存在, 1≤pos≤StrLength(S)-len+1。
42
操作结果:从串S中删除第pos个字符起长度为len的子串。
43
DestroyString (&S)
44
初始条件:串S存在。
45
操作结果:串S被销毁。
46
47
endADT
以下5个操作称为最小操作子集:
- 串赋值StrAssign
- 串比较StrCompare
- 求串长StrLength
- 串联接Concat
- 求子串SubString
延伸阅读
0 0
- 串的抽象数据类型ADT 定义串的一些操作
- 栈的抽象数据类型ADT
- 抽象数据类型定义(ADT)
- 抽象数据类型定义(ADT)
- 抽象数据类型的定义
- ADT(抽象数据类型)的理解
- 抽象数据类型ADT之栈的构建
- 抽象数据类型ADT之队列的构建
- 抽象数据类型线性表的定义—链表操作
- 表的抽象数据类型(abstract data type,ADT)
- 队列的抽象数据类型(abstract data type,ADT)
- 栈的抽象数据类型(abstract data type,ADT)
- 数据结构--抽象数据类型(ADT)的表示与实现
- 抽象数据类型线性表的定义
- 抽象数据类型三元组的定义
- 成绩表的抽象数据类型定义(ENGLISHSCORE LIST)
- 抽象数据类型线性表的定义
- C语言数据结构——串的定义及抽象数据类型
- 【校内互测】Rivendell’s pearls(字符串哈希+容斥)
- Android项目实战——注册功能
- IOS中NSOperation是实现多线程
- Vitamio视频在小米5手机无法播放问题
- 各种异常汇总
- 串的抽象数据类型ADT 定义串的一些操作
- 我遇到的微服务的Bean管理bug
- 0814牛客网总结
- mybatis基础知识——学习笔记(2)
- eclipse调试方法详解
- 一个IT人成功的背后!
- WebSocket API HTML5规范翻译(部分)
- HashCode学习笔记
- 配置Hadoop2.xx的高可用(Hadoop2.0 HA)