- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.字符串汇编
第3章 字符串
本章的基本内容是:
3.1 串类型定义
3.2 串的表示和实现
3.3 串的模式匹配算法
2017-4-10
3.1 串类型定义
串是一种特殊的线性表,它的数据元素仅由一个字符组成。
串(String) 是由零个或多个任意字符组成的有限序列,一般记作:s="s1 s2 … sn"。其中s 是串名;双引号为串的定界符,双引号内的内容(s1 s2 … sn)为串值,引号本身不是串的内容。Si (1=i=n)是串的元素; n为串的长度,表示串中所包含的字符个数,当n=0时,称为空串,通常记为Ф。
串中任意多个连续的字符组成的子序列称为该串的子串,Ф为特殊的子串。
包含子串的串称为主串。
子串的第一个字符在主串中的序号称为子串的位置。
当且仅当两个串的长度相等且对应字符都相同时,称为两个串相等。
3.1 串类型定义
抽象数据类型:
ADT String {
数据对象:D={ ai | ai∈ElemSet,i=1,2,3,…,n,n≥0}
数据关系:R={ai-1, ai | ai-1, ai∈D , i=1,2,3,…,n }
基本操作:
StrLength(s):求出串s的长度。
StrAssign(s1,s2):将s2的串值赋值给s1。
StrConcat (s1,s2,s):s1与s2连接以后的结果存于s中,原s1、s2的值不变。或StrConcat (s1,s2):将s2的内容连接于s1之后,s1改变,s2不变。
SubStr (s,i,len):返回从串s的第i个字符开始的长度为 len 的子串。len=0或i StrLength(s)得到的是Ф,i= StrLength(s)且len StrLength(s)则取第i个字符开始到串的最后一个字符的子序列作为返回值。
3.1 串类型定义
基本操作:
StrCmp(s1,s2):比较两个串s1、s2, 若s1=s2,返回值0;若s1s2, 返回值0;若s1s2, 返回值0。
StrIndex(s,t):找子串t在主串s中首次出现的位置。若t∈s,则操作返回t在s中首次出现的位置,否则返回值为-1。
StrInsert(s,i,t):将串t插入到串s 的第i个字符位置上,1≤i≤StrLength(s)+1。
StrDelete(s,i,len) :删除串s 中从第i个字符开始的长度为len的子串,1≤i≤StrLength(s),0≤len≤StrLength(s)-i+1。
StrRep(s,t,r):用子串r 替换串s中出现的所有子串t。
}ADT String
前5个操作是最为基本的,称为最小操作集。
3.1 串类型定义
串的比较:通过组成串的字符之间的比较来进行的。
给定两个串:X=x1x2…xn和Y=y1y2…ym,则:
1. 当n=m且x1=y1,…,xn=ym时,称X=Y;
2. 当下列条件之一成立时,称X<Y:
⑴ n<m且xi=yi(1≤ i≤n);
⑵ 存在k≤min(m,n),使得xi=yi(1≤i≤k-1)且xk<yk。
3. 不满足1和2的情况,则XY
3.1 串类型定义
求子串操作 SubStr(s, i, len) 示例
i = 3, len = 3
i = 7, len = 4
空串
3.2 串的表示和实现
串的存储结构
顺序串:用数组来存储串中的字符序列。
3.2 串的表示和实现
串的定长顺序存储结构
如何表示串的长度?
(1)方案1:定义一个串变量:SeqString s
0
1
2
3
4
5
6
7
8
9
10
...
?
?
MAXSIZE-1
a
b
c
d
e
f
g
h
i
j
k
?
?
…
?
s.curlen+1
typedef struct
{
char data[MAXSIZE];
int curlen;
}
3.2 串的表示和实现
串的定长顺序存储结构
(2)方案2:串尾存储特殊字符作为终结符,如 \0
0
1
2
3
4
5
6
7
8
9
10
...
?
?
MAXSIZE-1
a
b
c
d
e
f
g
h
i
j
k
\0
?
…
?
(3)方案3:用数组的0号单元存放串的长度
0
1
2
3
4
5
6
7
8
9
10
... MAXSIZE
10
a
b
c
d
e
f
g
h
i
j
空闲
3.2 串的表示和实现
定长顺序串的基本运算
1 串联接
把两个串s1和s2首尾连接成一个新串s ,即:s=s1+s2。
int StrConcat1(char s1[],char s2[],char s[]
您可能关注的文档
- 人因工程课程设计-垃圾桶设计分解.doc
- 3.5.1资源的跨区域调配汇编.ppt
- 3.6放大电路的频率响应汇编.ppt
- 设备设计模板2-用于合并分解.doc
- 3.6社会消费品零售总额统计汇编.ppt
- 3.6直线和圆的位置关系(第2课时)汇编.ppt
- 人因工程学4分解.ppt
- 3.6比和比例汇编.ppt
- 人音版四年级下册土风舞分解.ppt
- 人音版小学六年级下册音乐精品教案(2015年最新修订完整版本)分解.doc
- 湖南省湖湘C13教育联盟2023-2024学年九年级上学期第三次月考语文试题(解析版).docx
- 河南省项城市第三高级中学2024-2025学年高三上学期第二次考试(期中)历史试题(原卷版).docx
- 湖南省岳阳市岳阳县岳阳经济技术开发区长岭中学2023-2024学年九年级上学期12月月考语文试题(解析版).docx
- 河南省安阳市林州市2024-2025学年八年级上学期期中历史试题.docx
- 河南省郑州市宇华实验学校2024-2025学年高三上学期11月期中考试政治试题(原卷版).docx
- 独山中学2024~2025学年度第一学期高三第三次阶段性考试政治参考答案.docx
- 河南省新乡市部分学校2024-2025学年高三上学期期中联考政治试题(解析版).docx
- 河南省新乡市部分学校2024-2025学年高三上学期期中联考政治试题(原卷版).docx
- 河南省鹤壁市联考2024-2025学年九年级上学期11月期中考试英语试题.docx
- 河南省商丘市实验中学2023-2024学年九年级上学期12月月考语文试题(解析版).docx
文档评论(0)