Chapter04_串_数据结构(C语言版)_严蔚敏_配套课件

合集下载

严蔚敏数据结构-第四章 串

严蔚敏数据结构-第四章 串
S1 4 a b c d S2 2 e f T 6 a b c d e f
15
(2)S1串长 最大串长 串长<最大串长 串长 最大串长; S1,S2串长和 最大串长 串长和>最大串长 串长和 最大串长;
S1 6 a b c d e f S2 6 g h i j k l T 8 a b c d e f g h
3
串的抽象数据类型的定义: 串的抽象数据类型的定义: ADT String{ 数据对象: 数据对象:D={ai|ai∈CharacterSet, i=1,2,...,n, n>=0} 数据关系: 数据关系:R1={<ai-1,ai>|ai-1,ai∈D, i=2,...,n} 基本操作: 基本操作: StrAssign(&T, chars)
11
作业: 作业: 1.用5种串的基本操作(StrAssign、StrCompare、StrLen Concat、SubString)来逻辑实现StrInsert(&S, pos, T)操作 、 操作. )
Status StrInsert(String S, int pos , String T) { if ……….. return error; , , ); ); ); );
chars是字符串常量。生成一个其值等于chars的串 。 是字符串常量。生成一个其值等于 的串T。 是字符串常量 的串
StrCopy(&T, S)
存在则由串S复制得串 串S存在则由串 复制得串 存在则由串 复制得串T
StrEmpty(S)
存在则若S为空串 串S存在则若 为空串 返回真否则返回假 存在则若 为空串,返回真否则返回假
Sub返回串 的第pos个字符起长度为 返回串S的第 个字符起长度为len的子串 用Sub返回串S的第pos个字符起长度为len的子串

Chapter04_串_数据结构(C语言版)_严蔚敏_配套ppt课件

Chapter04_串_数据结构(C语言版)_严蔚敏_配套ppt课件
第四章 串
4.1 串类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法
4.1 串类型的定义
一、串的定义 二、串的抽象数据类型的定义如下
一、串的定义
串(string)(或字符串),是由零个或多个字符组成的有限 序列。一般记为
s=‘a1a2a3…an’
(n≥0)
其中,s是串名,单引号括起来的字符序列是串的值;
二、串的抽象数据类型的定义如下: ADT String { 数据对象: D={ ai |ai∈CharacterSet, i=1,2,...,n, n≥0 } 数据关系: R1={ < ai-1, ai > | ai-1, ai ∈D, i=2,...,n }
基本操作:
StrAssign (&T, chars) DestroyString(&S) StrCopy (&T, S) StrLength(S) StrCompare (S, T) Concat (&T, S1, S2) StrEmpty (S)
StrInsert (&S, pos, T)
初始条件:串S和T存在, 1≤pos≤StrLength(S)+1。 操作结果:在串S的第pos个字符之前 插入串T。 例如: S = ′chater′,T = ′rac′, 则执行 StrInsert(S, 4, T)之后得到 S = ′character′
StrLength (S) 初始条件:串 S 存在。 操作结果:返回 S 的元素个 数, 称为串的长度。
Concat (&T, S1, S2) 初始条件:串 S1 和 S2 存在。 操作结果:用 T 返回由 S1 和 S2 联接而成的新串。
例如: Concate( T, ′man′, ′kind′) 求得 T = ′mankind′

数据结构严蔚敏PPT完整版

数据结构严蔚敏PPT完整版
法“运行工作量”的大小,只依赖于问题的规模(通 常用n表示),或者说,它是问题规模的函数。
算法分析应用举例
算法中基本操作重复执行的次数是问题规模n的某 个函数,其时间量度记作 T(n)=O(f(n)),称作算法的 渐近时间复杂度(Asymptotic Time complexity),简称时 间复杂度。
《算法与数据结构》是计算机科学中的一门综合性 专业基础课。是介于数学、计算机硬件、计算机软件三 者之间的一门核心课程,不仅是一般程序设计的基础, 而且是设计和实现编译程序、操作系统、数据库系统及 其他系统程序和大型应用程序的重要基础。
1.1.1 数据结构的例子
例1:电话号码查询系统
设有一个电话号码薄,它记录了N个人的名字和其 相应的电话号码,假定按如下形式安排:(a1, b1),(a2, b2),…(an, bn),其中ai, bi(i=1,2…n) 分别表示某人的 名字和电话号码。 本问题是一种典型的表格问题。如 表1-1,数据与数据成简单的一对一的线性关系。
K={k1, k2, …, k9} R={ <k1, k3>,<k1, k8>,<k2, k3>,<k2, k4>,<k2, k5>,<k3, k9>, <k5, k6>,<k8, k9>,<k9, k7>,<k4, k7>,<k4, k6> } 画出这逻辑结构的图示,并确定那些是起点,那些是终点
数据元素之间的关系可以是元素之间代表某种含义 的自然关系,也可以是为处理问题方便而人为定义的 关系,这种自然或人为定义的 “关系”称为数据元素 之间的逻辑关系,相应的结构称为逻辑结构。
数据结构不同于数据类型,也不同于数据对象,它 不仅要描述数据类型的数据对象,而且要描述数据对象 各元素之间的相互关系。

数据结构严蔚敏PPT(完整版)

数据结构严蔚敏PPT(完整版)
算法(Algorithm):是对特定问题求解方法(步骤)的一种 描述,是指令的有限序列,其中每一条指令表示一个或 多个操作。
算法具有以下五个特性
① 有穷性: 一个算法必须总是在执行有穷步之后结 束,且每一步都在有穷时间内完成。
② 确定性:算法中每一条指令必须有确切的含义。 不存在二义性。且算法只有一个入口和一个出口。
图状结构
一般线性表 栈和队列 串 数组 广义表 一般树 二叉树 有向图 无向图
图1-5 数据逻辑结构层次关系图
1.1.5 数据类型
数据类型(Data Type):指的是一个值的集合和定 义在该值集上的一组操作的总称。
数据类型是和数据结构密切相关的一个概念。 在C 语言中数据类型有:基本类型和构造类型。
问题:必须先运行依据算法编制的程序;依赖软硬 件环境,容易掩盖算法本身的优劣;没有实际价值。 事前分析:求出该算法的一个时间界限函数。
与此相关的因素有: – 依据算法选用何种策略; – 问题的规模; – 程序设计的语言; – 编译程序所产生的机器代码的质量; – 机器执行指令的速度; 撇开软硬件等有关部门因素,可以认为一个特定算
K={k1, k2, …, k9} R={ <k1, k3>,<k1, k8>,<k2, k3>,<k2, k4>,<k2, k5>,<k3, k9>, <k5, k6>,<k8, k9>,<k9, k7>,<k4, k7>,<k4, k6> } 画出这逻辑结构的图示,并确定那些是起点,那些是终点
数据元素之间的关系可以是元素之间代表某种含义 的自然关系,也可以是为处理问题方便而人为定义的 关系,这种自然或人为定义的 “关系”称为数据元素 之间的逻辑关系,相应的结构称为逻辑结构。

数据结构严蔚敏ppt课件

数据结构严蔚敏ppt课件

数据结构严蔚敏ppt课件数据结构(严蔚敏)版●资料上传者:安徽大学研究生●资料使用范围:各大学考研及本科教学●欢迎报考安徽大学研究生●“星光考研书屋”祝您学习愉快[学习目标]掌握线性表的顺序存储结构和抽象数据类型中定义的每一种操作的含义,在顺序存储方式下每一种操作的具体实现和相应的时间复杂度;掌握链接存储的概念,线性表的单、双链接存储结构,对它们进行插入和删除结点的方法,循环单、双链表和带表头附加结点的单、双链表的结构和操作特点;掌握每一种线性表操作在由动态结点构成的单链表上具体实现的算法以及相应的时间复杂度。

2第2章线性表线性结构是最常用、最简单的一种数据结构。

而线性表是一种典型的线性结构。

其基本特点是线性表中的数据元素是有序且是有限的。

在这种结构中:① 存在一个唯一的被称为“第一个”的数据元素;② 存在一个唯一的被称为“最后一个”的数据元素;③ 除第一个元素外,每个元素均有唯一一个直接前驱;④ 除最后一个元素外,每个元素均有唯一一个直接后继。

32.1 线性表的逻辑结构线性表(Linear List ) :是由n(n ≧0)个数据元素(结点)a 1,a 2,…a n 组成的有限序列。

该序列中的所有结点具有相同的数据类型。

其中数据元素的个数n 称为线性表的长度。

当n=0时,称为空表。

当n>0时,将非空的线性表记作: (a 1,a 2,…a n ) a 1称为线性表的第一个(首)结点,a n 称为线性表的最后一个(尾)结点。

2.1.1 线性表的定义4a1,a2,…a i-1都是a i(2≦i≦n)的前驱,其中a i-1是a i的直接前驱;a i+1,a i+2,…a n都是a i(1≦i ≦n-1)的后继,其中a i+1是a i 的直接后继。

2.1.2线性表的逻辑结构线性表中的数据元素a i所代表的具体含义随具体应用的不同而不同,在线性表的定义中,只不过是一个抽象的表示符号。

◆线性表中的结点可以是单值元素(每个元素只有一个数据项) 。

数据结构(C)严蔚敏

数据结构(C)严蔚敏

选择合适的数据结构
选择原则
根据实际应用场景和需求,选择 最合适的数据结构。
常见数据结构
数组、链表、栈、队列、树、图等, 各有其特点和适用场景。
案例分析
例如,对于频繁进行查找操作的数 据,哈希表可能更合适;对于需要 频繁插入和删除元素的数据,链表 可能更合适。
空间和时间复杂度的优化
空间优化
通过减少数据存储空间的占用,提高数据结构的效率。
VS
快速排序
通过一趟排序将要排序的数据分割成独立 的两部分,其中一部分的所有数据都比另 一部分的所有数据要小,然后再按此方法 对这两部分数据分别进行快速排序,整个 排序过程可以递归进行,以此达到整个数 据变成有序序列。
排序算法
归并排序
将两个或两个以上的有序表组合成一个新的 有序表。
堆排序
利用堆这种数据结构所设计的一种排序算法。
数据结构(C)严蔚敏
目 录
• 引言 • 线性数据结构 • 非线性数据结构 • 数据结构的应用 • 数据结构的优化和改进建议
01 引言
什么是数据结构
定义
数据结构是计算机中数据的组织形式, 它根据数据特征将数据分成不同的类 型,并确定数据之间的相互关系。
数据结构的组成
包括数据的逻辑结构、物理结构和数 据的运算。
时间优化
通过改进算法和数据结构,减少数据操作的时间复杂度。
案例分析
例如,对于数组的插入和删除操作,可以通过二分查找法 将时间复杂度从O(n)降低到O(logn)。
算法的优化和改进
算法优化
通过改进算法逻辑,提高数据处理的效率。
算法改进
通过引入新技术或方法,改进现有算法的性能。
案例分析
例如,对于排序算法,快速排序、归并排序和堆排序各有其特点和适 用场景,可以根据实际情况选择最合适的算法。

数据结构严蔚敏(全部章节814张PPT)-(课件)

数据结构严蔚敏(全部章节814张PPT)-(课件)
① 集合:结构中的数据元素除了“同属于一个集合” 外,没有其它关系。
② 线性结构:结构中的数据元素之间存在一对一的 关系。
③ 树型结构:结构中的数据元素之间存在一对多的 关系。
④ 图状结构或网状结构:结构中的数据元素之间存 在多对多的关系。
图1-3 四类基本结构图
1.1.3 数据结构的形式定义
数据结构的形式定义是一个二元组: Data-Structure=(D,S)
计算机求解问题的一般步骤
编写解决实际问题的程序的一般过程:
– 如何用数据形式描述问题?—即由问题抽象出一个 适当的数学模型; – 问题所涉及的数据量大小及数据之间的关系; – 如何在计算机中存储数据及体现数据之间的关系? – 处理问题时需要对数据作何种运算? – 所编写的程序的性能是否良好? 上面所列举的问题基本上由数据结构这门课程来回答。
其中:D是数据元素的有限集,S是D上关系的有限集。 例2:设数据逻辑结构B=(K,R)
K={k1, k2, …, k9} R={ <k1, k3>,<k1, k8>,<k2, k3>,<k2, k4>,<k2, k5>,<k3, k9>, <k5, k6>,<k8, k9>,<k9, k7>,<k4, k7>,<k4, k6> } 画出这逻辑结构的图示,并确定那些是起点,那些是终点
<基本操作名>(<参数表>) 初始条件: <初始条件描述> 操作结果: <操作结果描述>
– 初始条件:描述操作执行之前数据结构和参数应 满足的条件;若不满足,则操作失败,返回相应的出 错信息。

课件-数据结构讲义(严蔚敏版)第四章 串

课件-数据结构讲义(严蔚敏版)第四章 串
if(pos>0) { n=StrLength(S); m=StrLength(T); i=pos;
while(i<=n-m+1) { SubString(sub,S,i,m);//sub返回S中第i个位置起长m的子串
if(StrCompare(sub,T)!=0) ++i; //串不等,位置后移 else return(i);//返回子串在T中的位置 }//while }//if return(0);//如S中无与T相等的子串 }//index
串复制StrCopy(&T,S)
Status StrCopy(SString &T, SString S) //S是源串,T是目的串 {
for(i=0;i <=S[0];++i)//字符序列的复制 T[i] = S[i];
return OK;
} 串比较StrCompare(S,T)
int StrCompare(SString S,SString T) { for (int i=1;i<=S[0]&&i<=T[0];i++) { if (S[i]!=T[i]) return S[i]-T[i]; return S[0]-T[0];
数据对象:D={ai| ai CharacterSet, i=1,2,…,n, n0} 数据关系:R1={< ai-1 ,ai >| ai-1 , ai D,i=1,2,…,n} 基本操作:
StrAssign(&T, chars), DestroyString(&S)
StrCopy(&T,S) , ClearString(&S), Replace(&S,T,V)

严蔚敏《数据结构》(C语言版)教材精讲(串)【圣才出品】

严蔚敏《数据结构》(C语言版)教材精讲(串)【圣才出品】

第4章串在非数值处理、事务处理等问题常涉及到一系列的字符操作。

计算机的硬件结构主要是反映数值计算的要求,因此,字符串的处理比具体数值处理复杂。

本章讨论串的存储结构及几种基本的处理。

4.1 串类型的定义一、串的基本概念串(字符串):是零个或多个字符组成的有限序列。

记作:S=‘a1a2…a n’,其中S是串名,a i(1≤i≤n)可以是数字、字母或其他字符。

串值:单引号括起来的字符序列。

【注意】单引号本身不属于串,它的作用只是为了避免与变量名或数的常量混淆而已。

串长:串中所包含的字符个数。

空串(空的字符串):长度为零的串,它不包含任何字符。

空格串(空白串):构成串的所有字符都是空格的串。

【注意】空串和空白串的不同,一个是不含任何字符,一个是含字符,但只含空格字符。

子串:串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。

子串的序号:将子串在主串中首次出现时的该子串的首字符对应在主串中的序号,称为子串在主串中的序号(或位置)。

例如,设有串A和B分别是:A=‘这是不是字符串’,B=‘是’,则B是A的子串,A为主串。

B在A中出现了两次,其中首次出现所对应的主串位置是2。

因此,称B在A 中的序号为2。

【注意】特别地,空串是任意串的子串,任意串是其自身的子串。

串相等:两个串的长度相等,且各个对应位置的字符都相同(串值相等)。

通常在程序中使用的串可分为两种:①串常量,和整常数、实常数一样,在程序中只能被引用但不能改变其值,即只能读不能写。

②串变量,和其他类型的变量一样,其值是可以改变。

二、串的抽象数据类型定义4.2 串的表示和实现串是一种特殊的线性表,其存储表示和线性表类似,但又不完全相同。

串的存储方式取决于将要对串所进行的操作。

串在计算机中有3种表示方式:定长顺序存储表示:将串定义成字符数组,利用串名可以直接访问串值。

用这种表示方式,串的存储空间在编译时确定,其大小不能改变。

堆分配存储方式:仍然用一组地址连续的存储单元来依次存储串中的字符序列,但串的存储空间是在程序运行时根据串的实际长度动态分配的。

(2024年)数据结构严蔚敏PPT完整版

(2024年)数据结构严蔚敏PPT完整版

选择排序的基本思想
在未排序序列中找到最小(或最大)元素,存放到排序 序列的起始位置,然后,再从剩余未排序元素中继续寻 找最小(或最大)元素,然后放到已排序序列的末尾。 以此类推,直到所有元素均排序完毕。
2024/3/26
33
交换排序和归并排序
交换排序的基本思想
通过不断地交换相邻的两个元素(如果它们的顺序错 误)来把最小的元素“浮”到数列的一端。具体实现 时,从第一个元素开始,比较相邻的两个元素,如果 前一个比后一个大,则交换它们的位置;每一对相邻 元素做同样的工作,从开始第一对到结尾的最后一对 ;这步做完后,最后的元素会是最大的数;针对所有 的元素重复以上的步骤,除了最后一个;持续每次对 越来越少的元素重复上面的步骤,直到没有任何一对 数字需要比较。
图的基本操作
创建图、添加顶点、添加边、删除顶点、删除边 等
2024/3/26
27
图的存储结构
01
邻接矩阵表示法
用一个二维数组表示图中顶点间的 关系,适用于稠密图
十字链表表示法
用于有向图,可以方便地找到任一 顶点的入边和出边
03
2024/3/26
02
邻接表表示法
用链表表示图中顶点间的关系,适 用于稀疏图
入栈操作将元素添加到栈顶,出栈操作将栈顶元素删 除,取栈顶元素操作返回栈顶元素但不删除,判断栈
是否为空操作检查栈中是否有元素。
2024/3/26
12
栈的表示和实现
栈可以用数组或链表来实现。
用数组实现时,需要预先分配一块连续的内存空间,用一个变量指示栈顶位置。入栈和出栈操作都可以 通过移动栈顶位置来实现。
22
二叉树的定义和基本操作
二叉树的定义
二叉树是一种特殊的树,每个节点最 多有两个子节点,分别称为左子节点 和右子节点。

《数据结构C语言版》严蔚敏PPTc文件-精PPT文档20页

《数据结构C语言版》严蔚敏PPTc文件-精PPT文档20页

谢谢!
《数据结构C语言版》严蔚 敏PPTc文件-精
26、机遇对于有准备的头脑有特别的 亲和力 。 27、自信是人格的核心。
28、目标的坚定是性格中最必要的力 量泉源 之一, 也中 ,徒劳 无功。- -查士 德斐尔 爵士。 29、困难就是机遇。--温斯顿.丘吉 尔。 30、我奋斗,所以我快乐。--格林斯 潘。
61、奢侈是舒适的,否则就不是奢侈 。——CocoCha nel 62、少而好学,如日出之阳;壮而好学 ,如日 中之光 ;志而 好学, 如炳烛 之光。 ——刘 向 63、三军可夺帅也,匹夫不可夺志也。 ——孔 丘 64、人生就是学校。在那里,与其说好 的教师 是幸福 ,不如 说好的 教师是 不幸。 ——海 贝尔 65、接受挑战,就可以享受胜利的喜悦 。——杰纳勒 尔·乔治·S·巴顿

数据结构(c语言版)课件 第四章 数组 (严蔚敏、吴伟民编 清华大学出版社)

数据结构(c语言版)课件 第四章 数组 (严蔚敏、吴伟民编 清华大学出版社)

8
0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 67 0 0
伪地址表示法
伪地址:本元素在矩阵中(包括零元素再内) 按行优先顺序的相对位置 伪地址 0 1 2
0 0 12 9 0 0 0 0 3 0 0 0 M 0 0 24 0 0 18 0 0 15 0 0 7 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 67 0 0
1 1 3 ^ 2 ^ ^ 4 1 8 ^ ^ 2 5
3 0 A 0 8
0 0 5 4 0 0 0 0 43
2 ^
3
4 ^
从键盘接收信息建立十字链表算法
令q=NULL,p=rh[r-1], (1)寻找插入位置:当p!=NULL且c>p->col时,p和q右移 (2)插入: a、若p==NULL且q==NULL,即本行空,则rh[r-1]==s; b、若p==NULL,q!=NULL,即走到行末,则q->right=s c、若c==p->col,则修改p->val d、若c<p->col且q==NULL,则在p之前插入s,即s是行链表中 第一个结点,令rh[r-1]=s; s->right=p; e、若c<p->col且q!=NULL,则在p之前插入s, 即 s->right=p; q->right=s;
2
5 6 7
3 4
5
7
8
i 0 6 1 1 3 3 4
j 7 2 3 1 6 3
v 8 12 9 -3 14 24
v
0 7 1 1 2 1 3 2 4 5 2 3 3
6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Replace (&S, T, V)
初始条件:串S, T和 V 均已存 在,
且 T 是非空串。 操作结果:用V替换主串S中出现
的所有与(模式串)T 相等的不重叠的子串。
例如:
假设 S = ′abcaabcaaabca′,T = ′bca′ 若 V = ′x′, 则经置换后得到
S = ′axaxaax′
• 空串是任意串的子串; • 任意串又是自己的子串
注意: ⑴串值必须用一对单引号括起来,但单引号本身不属
于串; ⑵空串与空白串截然不同,空Байду номын сангаас不包含任何字符。
二、串的抽象数据类型的定义如下:
ADT String { 数据对象: D={ ai |ai∈CharacterSet, i=1,2,...,n, n≥0 } 数据关系:
R1={ < ai-1, ai > | ai-1, ai ∈D, i=2,...,n }
基本操作:
StrAssign (&T, chars)
DestroyString(&S) StrCopy (&T, S) StrLength(S) StrCompare (S, T) Concat (&T, S1, S2) StrEmpty (S)
SubString (&Sub, S, pos, len)
初始条件:
串 S 存在,1≤pos≤StrLength(S) 且0≤len≤StrLength(S)-pos+1。
操作结果:
用 Sub 返回串 S 的第 pos 个字符起 长度为 len 的子串。
子串为“串”中的一个字符子序列
例如: SubString( sub, ′commander′, 4, 3)
若 V = ′bc′, 则经置换后得到 S = ′abcabcaabc′
StrInsert (&S, pos, T)
初始条件:串S和T存在, 1≤pos≤StrLength(S)+1。
操作结果:在串S的第pos个字符之前 插入串T。
求得 sub = ′man′ ; SubString( sub, ′commander′, 1, 9)
求得 sub = ′commander′; SubString( sub, ′commander′, 9, 1)
求得 sub = ′r′;
SubString(sub, ′commander′, 4, 7) sub = ?
StrLength (S) 初始条件:串 S 存在。 操作结果:返回 S 的元素个 数,
称为串的长度。
Concat (&T, S1, S2) 初始条件:串 S1 和 S2 存在。 操作结果:用 T 返回由 S1 和 S2
联接而成的新串。
例如: Concate( T, ′man′, ′kind′) 求得 T = ′mankind′
SubString (&Sub, S, pos, len) ClearString (&S) Index (S, T, pos) Replace (&S, T, V) StrInsert (&S, pos, T) StrDelete (&S, pos, len)
} ADT String
StrAssign (&T, chars)
的子串, 则返回它在主串 S 中第pos个 字符之后第一次出现的位置; 否则函数值为0。
“子串在主串中的位置”意指子串 中的第一个字符在主串中的位序。
假设 S = ′abcaabcaaabc′, T = ′bca′ Index(S, T, 1) = 2; Index(S, T, 3) = 6; Index(S, T, 8) = 0;
ai可以是字母,数字或其他字符;
串中的字符个数称为串的长度; 零个字符的串称为空串(Null string),其长度为零; 串中任意个连续的字符组成的子序列称为该串的子串; 包含子串的串相应地称为主串; 字符在序列中的序号为该字符在串中的位置; 子串在主串中的位置则以子串的第一个字符在主串中的位 置来表示; 由一个或多个空格字符组成的串称为空格串;
例:串a,b,c,d,e五个串如下:
a=‘very difficult’; b=‘ ’; c=‘’; d=‘very’; e=‘difficult’;
串a的长度为14;
串b是长度为3的空格串;
串c是空串,长度为0;
串d和e是串a的子串,串d在串a中的位置 是1,串e在串a中的位置是6。
• 串相等:当且仅当两个串的值相等,即只有当两个 串的长度相等,并且各个对应位置的字符都相等时 才相等;
第四章 串
4.1 串类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法
4.1 串类型的定义
一、串的定义 二、串的抽象数据类型的定义如下
一、串的定义
串(string)(或字符串),是由零个或多个字符组成的有限 序列。一般记为
s=‘a1a2a3…an’ (n≥0)
其中,s是串名,单引号括起来的字符序列是串的值;
初始条件:chars 是字符串常量。 操作结果:把 chars 赋为 T 的值。
StrCopy (&T, S) 初始条件:串 S 存在。 操作结果:由串 S 复制得串 T。
DestroyString (&S)
初始条件:串 S 存在。 操作结果:串 S 被销毁。
StrEmpty (S)
初始条件:串S存在。 操作结果:若 S 为空串,则返回
SubString(sub, ′beijing′, 7, 2) = ? sub = ?
起始位置和子串长度之间存在约束关系
SubString(′student′, 5, 0) = ′′
长度为 0 的子串为“合法”串
Index (S, T, pos)
初始条件:串S和T存在,T是非空串,
1≤pos≤StrLength(S)。 操作结果: 若主串 S 中存在和串 T 值相同
TRUE; 否则返回 FALSE。
′′ 表示空串,空串的长度为零。
StrCompare (S, T) 初始条件:串 S 和 T 存在。 操作结果:若S > T,则返回值 > 0;
若S = T,则返回值 = 0; 若S < T,则返回值 < 0。
例如:StrCompare(′data′, ′state′) < 0 StrCompare(′cat′, ′case′) > 0
相关文档
最新文档