数据结构第04章 串
数据结构-栈与队列

栈 1.6栈的应用
运算符的优先级关系表在运算过程中非常重要,它是判定进栈、出栈的重要依据。
θ1
θ2
+
-
+
>
>
-
>
>
*
>
>
/
>
>
(
<
<
)
>
>
#
<
<
*
/
(
)
#
<
<
<
>
>
<
<
<
>
>
>
>
<
>
>
>
>
<
>
>
<
<
<
=
>
>
>
>
<
<
<
=
栈
1.6栈的应用
下面以分析表达式 4+2*3-12/(7-5)为例来说明求解过程,从而总结出表达式求值的算 法。求解中设置两个栈:操作数栈和运算符栈。从左至右扫描表达式:# 4+2*3-12/(7-5) #, 最左边是开始符,最右边是结束符。表达式求值的过程如下表所示:
1.4栈的顺序存储结构
设计进栈算法——Push 函数。首先,判断栈是否已满,如果栈已满,就运用 realloc 函 数重新开辟更大的栈空间。如果 realloc 函数返回值为空,提示溢出,则更新栈的地址以及栈 的当前空间大小。最终,新元素入栈,栈顶标识 top 加 1。
数据结构第四章考试题库(含答案)

第四章串一、选择题1.下面关于串的的叙述中,哪一个是不正确的()【北方交通大学 2001 一、5(2分)】A.串是字符的有限序列 B.空串是由空格构成的串C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储2 若串S1=‘ABCDEFG’, S2=‘9898’ ,S3=‘###’,S4=‘012345’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index (S2,‘8’),length(S2)))其结果为()【北方交通大学 1999 一、5 (25/7分)】A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345E.ABC###G1234 F.ABCD###1234 G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串 B.联接 C.匹配 D.求串长【北京邮电大学 2000 二、4(20/8分)】【西安电子科技大学 1996 一、1 (2分)】4.已知串S=‘aaab’,其Next数组值为()。
【西安电子科技大学 1996 一、7 (2分)】A.0123 B.1123 C.1231 D.12115.串‘ababaaababaa’的next数组为()。
【中山大学 1999 一、7】A.0 B.012121111212 C.0 D.06.字符串‘ababaabab’的nextval 为()A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )【北京邮电大学 1999 一、1(2分)】7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval 数组的值为()。
严蔚敏《数据结构》(第2版)笔记和习题(含考研真题)详解

目录分析
1.2强化习题详解
1.1复习笔记
1.3考研真题与典 型题详解
2.2强化习题详解
2.1复习笔记
2.3考研真题与典 型题详解
3.2强化习题详解
3.1复习笔记
3.3考研真题与典 型题详解
Hale Waihona Puke 4.2强化习题详解4.1复习笔记
4.3考研真题与典 型题详解
5.2强化习题详解
5.1复习笔记
5.3考研真题与典 型题详解
严蔚敏《数据结构》(第2版)笔 记和习题(含考研真题)详解
读书笔记模板
01 思维导图
03 目录分析 05 读书笔记
目录
02 内容摘要 04 作者介绍 06 精彩摘录
思维导图
关键字分析思维导图
习题
数据结构
笔记
名校
复习
重难点
第章
笔记
教材
真题 真题
存储管理
第版
典型
二叉树
习题 题
树 动态
内容摘要
严蔚敏所著的《数据结构》(第2版,清华大学出版社)是我国高校采用较多的计算机专业优秀教材,也被众 多高校指定为计算机专业考研参考书目。作为该教材的辅导书,本书具有以下几个方面的特点:1.整理名校笔记, 浓缩内容精华。在参考了国内外名校名师讲授严蔚敏《数据结构》的课堂笔记基础上,本书每章的复习笔记部分 对该章的重难点进行了整理,同时对重要知识点进行点拨,因此,本书的内容几乎浓缩了配套教材的知识精华。 2.归纳典型题,强化知识考点。为了进一步巩固和强化各章知识难点的复习,特针对该教材的重难点相应整理了 典型强化习题,并对相关知识点进行归纳和延伸,梳理知识点逻辑关系,以达到高效复习的目的。3.精选考研真 题,巩固重难点知识。为了强化对重要知识点的理解,本书精选了部分名校近几年的数据结构考研真题,这些高 校大部分以该教材作为考研参考书目。所选考研真题基本涵盖了各个章节的考点和难点,特别注重联系实际,凸 显当前热点。要深深牢记:考研不同一般考试,概念题(名词解释)要当作简答题来回答,简答题要当作论述题 来解答,而论述题的答案要像是论文,多答不扣分。有的论述题的答案简直就是一份优秀的论文(其实很多考研 真题就是选自一篇专题论文),完全需要当作论文来回答!
串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版

串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版习题集解析部分第4章串——《数据结构题集》-严蔚敏.吴伟民版源码使⽤说明链接☛☛☛课本源码合辑链接☛☛☛习题集全解析链接☛☛☛相关测试数据下载链接☛本习题⽂档的存放⽬录:数据结构\▼配套习题解析\▼04 串⽂档中源码的存放⽬录:数据结构\▼配套习题解析\▼04 串\▼习题测试⽂档-04源码测试数据存放⽬录:数据结构\▼配套习题解析\▼04 串\▼习题测试⽂档-04\Data⼀、基础知识题4.1❶简述空串和空格串(或称空格符串)的区别。
4.2❷对于教科书4.1节中所述串的各个基本操作,讨论是否可由其他基本操作构造⽽得,如何构造?4.3❶设s = ‘I AM A STUDENT’,t = ‘GOOD’,q = ‘WORKER’。
求:StrLength(s),StrLength(t),SubString(s, 8, 7),SubString(t, 2, 1),Index(s, ‘A’),Index(s, t),Replace(s, ‘STUDENT’, q),Concat(SubString(s, 6, 2), Concat(t, SubString(s, 7, 8)))。
4.4❶已知下列字符串a = ‘THIS’, f = ‘A SAMPLE’, c = ‘GOOD’, d = ‘NE’,b = ‘ ’.s = Concat(a, Concat(SubString(f, 2, 7), Concat(b, SubString(a, 3, 2)))),t = Replace(f, SubString(f, 3, 6), c),u = Concat(SubString(c, 3, 1), d),g = ‘IS’,v = Concat(s, Concat(b, Concat(t, Concat(b, u)))),试问:s,t,v,StrLength(s),Index(v, g),Index(u, g)各是什么?4.5❶试问执⾏以下函数会产⽣怎样的输出结果?void demonstrate(){StrAssign(s, ‘THIS IS A BOOK’);Replace(s, SubString(s, 3, 7), ‘ESE ARE’);StrAssign(t, Concat(s, ‘S’));StrAssign(u, ‘XYXYXYXYXYXY’);StrAssign(v, SubString(u, 6, 3));StrAssign(w, ‘W’);printf(‘t=’, t, ‘v=’, v, ‘u=’, Replace(u, v, w));}//demonstrate4.6❷已知:s = ‘(XYZ)+*’,t = ‘(X+Z)*Y’。
数据结构(长安大学)讲课PPT4

(7) StrInsert(s,pot,t)----将t插入s中第pot个字符之前。 设 s="ABC123" 执行: StrInsert(s,4,"**"); 有: s="ABC**123" (8)用Replace(s,t,v)实现删除 设 s="ABC//123" 执行:StrInsert(s,"//","") 有: s="ABC123"
t 1 0
2
3
A
B
C
D
E
\0
1
2
3
4
5பைடு நூலகம்
6
7
8
9
10 11
(2)s1的长度≤t的最大长度≤s1的长度+s2的长度: s1 1 2 3 \0 0 1 2 3 s2 A B C D 0 1 2 3
E \0
4
截去
5
t 1 2 3 A B C 0 1 2 3 4 5 (3) t的最大长度<s1的长度:
\0
6
A3*4*2 =
a111 a121 a131 a141
a112 a122 a132 a142
a211 a221 a231 a241
a212 a222 a232 a242
a311 a321 a331 a341
a312 a322 a332 a342
第3页
第2页
第1页
5.1.2 数组的类型定义和变量说明: 例1 int a[10]; //10个整数的一维数组 char b[4][5]; //4行5列个字符的二维数组 float c[3][4][2]; //3*4*2个实数的三维数组
数据结构教案C语言版

课程教案课程名称:数据结构授课教师:学习对象:任课时间:一、学生情况分析数据结构是计算机专业的一门核心专业课程。
学生在前期的学习中已经学习了C语言程序设计课程。
通过本课程学习使学生对提高编写程序的能力以及解决实际问题的能力。
二、课程教学目标《数据结构》是计算机学科中一门核心专业基础课。
主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。
通过本课程的学习,使学生深透地理解数据结构的逻辑结构和物理结构的基本概念以及有关算法,培养基本的、良好的程序设计技能,编制高效可靠的程序,为学习操作系统、编译原理和数据库等课程奠定基础。
三、课程教学内容第一章绪论教学内容:1)什么是数据结构2)抽象数据类型概念;数据类型;数据抽象与抽象数据类型;用于描述数据结构的语言3)数据结构的抽象层次4)算法定义5)性能分析与度量;算法的性能标准;算法的后期测试;算法的事前估计;空间复杂度度量;时间复杂度度量;时间复杂度的渐进表示法;教学要求:了解:数据结构基本概念及数据结构的抽象层次了解:抽象数据类型概念了解:算法的定义及算法特性掌握:算法的性能分析与度量方法第二章线性表教学内容:1)线性表的定义和特点2)线性表的顺序存储及查找、插入和删除操作3)线性表的链式存储及查找、插入和删除操作4)使用线性表的实例教学要求:了解:线性表的定义和特点熟练掌握:线性表的顺序存储结构的查找、插入和删除等基本操作熟练掌握:单链表、循环链表及双向链表的定义及实现掌握:熟练掌握单链表的应用方法第三章栈和队列教学内容:1)栈:栈的抽象数据类型;栈的顺序存储表示;栈的链式存储表示2)队列:队列的抽象数据类型;队列的顺序存储表示;队列的链式存储表示3)队列的应用举例教学要求:熟练掌握:栈的定义及实现熟练掌握:队列的定义及实现掌握:能运用栈和队列解决简单实际问题教学:内容:1)字符串的抽象数据类型2)字符串操作的实现3)字符串的模式匹配教学要求:熟练掌握:字符串的定义方式熟练掌握:字符串的各种操作的实现了解:字符串的模式匹配算法第五章数组和广义表教学:内容:1)数组的定义和初始化2)作为抽象数据类型的数组的顺序存储方式教学要求:了解:作为抽象数据类型的数组的定义熟练掌握:顺序表的数组定义方式及实现第六章树和二叉树教学内容:1)树和森林的概念:树的定义;树的术语;树的抽象数据类型;森林的概念2)二叉树:二叉树的定义;二叉树的性质;二叉树的抽象数据类型3)二叉树的表示:数组表示;链表存储表示4)二叉树的遍历:中序遍历;前序遍历;后序遍历;应用二叉树遍历的实例;二叉树的中序非递归算法5)线索化二叉树:线索;中序线索化二叉树;前序与后序的线索化6)树与森林:树的存储表示;森林与二叉树的转换;树的遍历;森林的遍历7)二叉树的计数8)霍夫曼树:路径长度;霍夫曼树;霍夫曼树编码教学要求:了解:树和森林的概念掌握:二叉树的概念、性质及二叉树的表示熟练掌握:二叉树的遍历方法掌握:线索化二叉树的特性及寻找某结点的前驱和后继的方法掌握:树和森林的实现及遍历方法掌握:二叉树的计数方法及从二叉树遍历结果得到二叉树的方法掌握:霍夫曼树的实现方法及霍夫曼编码的概念第七章图教学内容:1)图的基本概念:图的基本概念;图的抽象数据类型2)图的存储表示:邻接矩阵;邻接表;邻接多重表3)图的遍历与连通性;深度优先搜索;广度优先搜索;连通分量4)最小生成树:克鲁斯卡尔算法;普里姆算法教学要求:掌握:图的基本概念和图的存储表示熟练掌握:图的两种遍历方法与求解连通性问题的方法掌握:构造最小生成树的Prim和Kruskal方法教学内容:1)静态查找表:顺序表的查找;有序表的查找;索引顺序表的查找2)二叉排序树:二叉排序树上的搜索、插入和删除教学要求:熟练掌握:静态搜索表的顺序搜索和折半搜索方法熟练掌握:二叉搜索树的表示、搜索、插入、删除算法及其性能分析方法第十章内部排序教学内容:1)概述2)插入排序:直接插入排序;对分插入排序;链表插入排序;希尔排序3)选择排序:直接选择排序;堆排序教学要求:掌握:排序的基本概念和性能分析方法掌握:插入排序、选择排序、等内排序的方法及性能分析方法单元名称:第一讲:绪论一、教学目标1.了解《数据结构》课程的体系结构2.掌握本章介绍的各种基本概念和术语3.了解数据结构的二元组表示4.掌握逻辑结构与物理结构之间的映像关系。
C++_04_01_数组的应用

西南交通大学
24
西南交通大学
[例4-5]自动产生并 输出12行杨辉三角形
1
1
1 2
1
1
1
1 4
3
6
3
4
1
1
∶
∶
25
#include <iostream> #include <iomanip> using namespace std; const int N=5; void main() { int i,j,a[N][N]; for (i = 0; i < N; i++) { a[i][0] = 1; a[i][i] = 1; }
9
将数据存储到一维数组
西南交通大学
例如: string st[6]; int a[5]={19};
cin>>a[4];
getline(cin,st);
如果输入含有空格 的字符串,使用getline(), 而非cin
10
二维数组的定义及引用
例如: float a[3][4]; b[1][2]=a[2][3]/2 可以理解为
西南交通大学
26
西南交通大学
for (i = 2; i < N; i++) for (j = 1; j < i; j++) a[i][j] = a[i-1][j-1] + a[i-1][j]; for (i = 0; i < N; i++) { for (j = 0; j < (N * 3 - 3 * i); j++) cout<<" "; for (j = 0; j <= i; j++) cout<<setw(6)<<a[i][j]; cout<<endl; } }
Python基础编程与实践教学课件第4章 典型数据结构

根据需要,也可以在集合和列表之间进行相互转换。如果将一个集 合作为参数传入list()函数,则可以返回一个列表对象。
4.4 字典
4.4.1 创建字典
字典就是用花括号括起来的一组“关键字:值”对,每个“关键字: 值”对就是字典中的一个元素或条目。
1. 创建可变集合
创建可变集合的最简单方法是使用逗号分隔一组数据并放在一对花 括号中。
2. 创建不可变集合
不可变集合可以通过调用frozenset()函数来创建,调用格式如下:
frozenset([iterable])
4.3.2 集合的基本操作
1. 传统的集合运算 (1)计算求交集:使用运算符“&”。 (2)计算并集:使用运算符“|”。 (3)计算差集:使用运算符“-”。 (4)计算对称差集:使用运算符“^”。 2. 集合的比较 (1)判断相等:使用运算符“==”。 (2)判断不相等。使用运算符“!=”。 (3)判断真子集:使用运算符“<”。 (4)判断子集:使用运算符“<=”。 (5)判断真超集:使用运算符“>”。 (6)判断超集:使用运算符“>=”。 3. 集合的并入 对于可变集合,可以使用运算符“|=”将一个集合并入另一个集合中。 4. 集合的遍历 使用for循环可以遍历集合中的所有元素。
4.3.3 集合的常用方法(2)
2. 仅适用于可变集合的方法 (1)set1.add(x):在集合set1中添加元素x。 (2)set1.update(set2, set3, ..., setn):该方法使用集合set2, set3, ..., setn拆分成单个数据项并添加到集合set1中。 ( 3 ) set1.intersection_update(set2, set3, ..., setn) : 求 出 集合set1, set2, set3, ..., setn集合的交集并将结果赋值给set1。 (4)set1.difference_update(set2, set3, ..., setn):求出属 于集合set1但不属于集合set2, set3, ..., setn的元素并将赋值给 set1。 (5)set1.symmetric_difference_update(set2):求出集合set1和 set2的对称差集并将结果赋值给set1。 (6)set1.remove(x):从集合set1中删除元素x。 (7)set1.discard(x):从集合set1中删除元素x。 (8)set1.pop():该方法从集合set1中弹出一个元素。 (9)set1.clear():删除集合set1中的所有元素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章串教学目的与要求本章目的是介绍串的逻辑结构、存储结构及其串上的基本运算。
重点和难点本章重点是掌握串上实现的模式匹配算法,其也是本章难点。
教学内容第一节串的基本概念4.1.1 基本概念串:是零个或多个字符组成的有限序列。
串中所包含的字符个数称为串的长度。
空串:长度为0的串称为空串,它不包含任何字符。
空白串:仅由一个或多个空格组成的串称为空白串。
应注意空串和空白串的区别。
子串、主串:串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。
空串是任意串的子串,任意串是其自身的子串。
子串在主串中的位置:通常,将子串在主串中首次出现时子串首字符对应的主串中的序号定义为子串在主串中的位置。
2.串的基本运算(1)求串的长度(Length)(2)串复制 (Copy):(3)串联接 (Concat)(4)串比较 (Compare)(5)字符定位(Index)除上述基本运算外,串运算还有求子串、子串的定位、子串的置换等操作。
这些操作,一般可由这些基本操作实现。
第二节串的存储结构4.2.1串的顺序存储1.静态存储分配的顺序串顺序串最简单的描述形式是直接使用定长的字符数组来定义。
其定义形式为# define maxstrsize 256typedef char Seqstring[maxstrsise];利用类型描述符Seqstrsring可定义数组变量存储串,利用特定字符表示串的结束(C语言用转义字符’\0’) 。
例如Seqstrstring s; 变量s可存储长度不超过255个字符的字符串,以’\0’作为串的结束。
顺序串的类型定义也可以象线性表的顺序存储一样,在定义字符数组的基础上,引入描述长度的成员。
其定义形式为# define maxstrsize 256typedef struct {char ch[maxstrsise];int length;}Sqestring;(2)动态存储分配的顺序串(堆)上述两种方式的共同缺点是主串值的存储空间是静态分配的是定长的。
动态分配则克服了上述缺点,其余定义形式为typedef struct {char *ch;int length;}Hstring;成员ch为指针型,若串非空,按实际需要动态分配存储空间,ch指向其起始地址,否则ch为FULL。
成员length存储串长度。
(3)串的链式存储用单链表的方式来存储串值,就是串的链式存储,简称为链串。
每个结点可以存储一个字符(数据域data为字符型),也可以存储多个字符(数据域data定义为字符型数组)。
3.基本运算的实现串匹配算法很多,这里只讨论的是一种简单的朴素的串匹配算法。
在串匹配中,一般将主串称为目标(串),子串称为模式(串)。
设T为目标串,设P为模式串。
串匹配实际上是对合法的位置0≤i ≤n-m,依次将目标串中的子串T[i..i+m-1]和模式串P[0..m-1]进行比较,若相等,则称从位置i开始的匹配成功,否则,则称从位置i 开始的匹配失败。
位置i称为位移,匹配成功时,位置i称为有效位移,匹配失败时,位置i称为无效位移。
(1) 顺序串上的子串的定位运算(模式匹配)算法思想:通过一个循环依次检查n-m+1个合法的位移i(0≤i≤n-m)是否为有效位移。
i初值为0,终值为n-m,其确定了目标串中子串的起始位置,每趟匹配结束后通过i值加1(i++)使i指向下一合法位移。
C语言算法:Int naivestrmatch(Seqstring T, Seqstring P){//查找模式P在目标T中首次出现位置,成功时返回有效位移i,失败返回-1int i,j,k;int m=P.length, n=T.length;//模式和目标串的长度for (i=0;i<=n-m;i++) //循环控制匹配的趟数,其由合法位移的个数确定{ j=0;k=i; //确定模式串起始位置j、目标串动中子串的起始位置k,即合法位移iwhile (j<m&&T.ch[k]==P.ch[j]) //循环判定i是否为有效位移(子串和模式串中对应位置字符逐一比较){ k++; j++; }if (j==m) //退出while循环若j==m说明匹配成功return(i);}return –1; //退出外循环,说明没有有效位移,匹配失败}算法时间复杂度为O(n-m+1)m)(2)链串上的子串的定位运算(模式匹配)算法思想:算法思想与顺序串上的子串的定位运算完全相同。
但应注意,存储结构不同将导致算法实现时具体操作的不同。
C语言算法:Linkstrnode *linkstrmatch(Linkstring T,Linkstring P){ //查找模式P在目标T中首次出现位置,成功时返回有效位移shift,失败返回NULLLinkstrnode *shift,*t1,*p1;Shift=T;t1=shift;p1=P;//工作变量初始设置t1指向子串的起始位置,p1指向模式的起始位置while (t1&&p1) //循环控制匹配 p1为NULL 匹配成功,t1为NULL且 p1不为NULL 匹配失败{if (t1->data==p1->data){t1=t1->next; p1=p1->next; }else{ shift=shift->next; t1=shift;p1=P;}} //对应结点字符相等,t1,p1后移指向下一结点,否则,合法位移shift后移指向下一子串,t1、p1重新定位开始下趟匹配。
if (p1==NULL)return shift;elsereturn NULL;}//退出循环后,判定匹配成功与否算法时间复杂度与顺序串上的子串的定位运算相同。
分析:顺序串和链串上实现串的模式匹配,算法思想相同,但应注意,存储结构不同所导致的算法实现时具体操作上的区别。
在顺序串上位移为整数,链串上位移为结点的地址;子串与模式匹配时工作变量后移在顺序串上通过加1实现,链串上靠指针变量后移实现;匹配成功与否的判令条件顺序串上为j==m,链串上为p==NULL。
对于不同的存储结构能够写出算法这是学习数据结构的基本要求,改变存储结构要求应写出算法这也是一个重点。
这一点大家应给予足够的重视。
应用举例算法阅读题1.下列算法的功能是比较两个链串的大小,其返回值为:-1 s1<s2comstr(s1,s2)= 0 s1=s21 s1>s2请在空白处填入适当的内容。
〖2001〗int comstr(linkstring s1,linkstring s2){//s1和s2为两个链串的头指针while(s1&&s2) {if(s1->data<s2->data) return –1;if(s1->data>s2->data) return 1;①②}if( ③ ) return –1;if( ④ ) return 1;⑤ ;}〖分析〗该题考核点是串的比较操作。
While型循环通过指针s1、s2将两个串中字符逐一比较,若发现不等字符,则不等字符的大小就是两个串的大小;若所比较字符均相等,直到有串被扫描完为止,退出循环。
然后判断,若某个串未被扫描完,则其值大,若两个串同时被扫描完,则两个串相等。
〖答案〗①s1=s1->next; ② s2=s2->next; ③ s2(或s2!=NULL) ④ s1(或s1!=NULL) ⑤ return 02.编写算法实现现两个串的连接。
算法如下:void stringcat(Hstring S,Hstring T){char *p,*q;p=S.ch+S.length;q=t.ch;while(p<S.ch+maxsize&&q<T.ch+T.length) *p++ =*q++;if(q<T.ch+maxsize) S.lengh=maxsize;else S.length=S.lengh+T.length;}3.删除主串中所有指定子串。
算法如下:void delsubstring(Hstring S,Hstring T) {int i=0,j,k;while(i<S.length){for(j=i,k=0;k<T.length;j++,k++)if(S.ch[j]!=T.ch[k])break;if(k>=T.length){while(j<S.length){S.ch[j-T.length]=S.ch[j];j++;}S.length=S.length-T.length;}elsei++;}}【历届试题分析】一、选择题1.下所述中正确的是()〖2001〗A.串是一种特殊的线性表B.串的长度必须大于零C.串中元素只能是字母D.空串就是空白串〖答案〗A2.若目标串的长度为n,模式串的长度为[n/3],则执行模式匹配算法时,在最坏情况下的时间复杂度是()〖2001〗A.O(n/3) B.O(n) C.O(n2) D.O(n3)〖分析〗最坏情况下模式匹配的时间复杂度为O((n-[n/3]+1)*[n/3]),由于n和[n/3]是同阶的,所以,时间复杂度可写为O(n2)。
〖答案〗C3.设有两个串T和P,求P在T中首次出现的位置的串运算称作()〖2003〗A.联接B.求子串C.字符定位D.子串定位〖分析〗该题考核点是串的基本操作。
〖答案〗D4.为查找某一特定单词在文本中出现的位置,可应用的串运算是()〖2002〗A.插入B.删除C.串联接D.子串定位〖答案〗D5.已知函数Sub(s,i,j)的功能是返回串s中从第i个字符起长度为j的子串,函数Scopy(s,t)的功能为复制串t到s。
若字符串S="SCIENCESTUDY",则调用函数Scopy(P,Sub(S,1,7))后得到( )〖2002〗A.P="SCIENCE" B.P="STUDY"C.S="SCIENCE" D.S="STUDY"〖分析〗该题考核点是串的基本操作,函数Scopy(P,Sub(S,1,7))将串中子串″SCIENCE″复制到P中,而串S值未变。
正确答案为A。
〖答案〗A二、填空题6.在串S="structure"中,以t为首字符的子串有12个。
〖2001〗〖分析〗该题考核点是子串的概念。
其中存在两个长度为1的子串。
〖答案〗127.串S="I am a worker"的长度是________。