东华大学数据结构第四章串
第4 章知识点总结
第4 章知识点总结在第四章中,我们将探讨一些重要的知识点,包括:数据结构、算法、排序算法、搜索算法等内容。
这些知识点对于我们理解计算机科学和编程十分重要,因此我们需要认真学习和掌握。
接下来,我们将深入研究这些知识点,并总结出一些重要的观点和技巧,希望能够对大家的学习有所帮助。
1. 数据结构数据结构是指在计算机中组织和存储数据的方式。
常见的数据结构包括数组、链表、栈、队列、树、图等。
每种数据结构都有其特点和适用场景,我们需要根据具体的问题选择合适的数据结构。
在实际编程中,我们经常需要对数据进行增删改查操作,因此对于数据结构的理解和运用非常重要。
2. 算法算法是解决问题的方法和步骤,是计算机程序的核心。
好的算法可以提高程序的效率和性能。
常见的算法包括排序算法、搜索算法、动态规划、递归等。
了解这些算法的原理和实现方式,能够帮助我们解决各种复杂的问题,提高编程能力。
3. 排序算法排序算法是将一组数据按照一定规则进行排列的算法。
常见的排序算法包括:冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。
每种排序算法都有其特点和适用场景,我们需要根据具体的问题选择合适的排序算法。
了解这些排序算法的原理和实现方式,能够帮助我们对数据进行高效的排序操作。
4. 搜索算法搜索算法是在一组数据中查找指定元素的算法。
常见的搜索算法包括:线性查找、二分查找、哈希查找、深度优先搜索、广度优先搜索等。
每种搜索算法都有其特点和适用场景,我们需要根据具体的问题选择合适的搜索算法。
了解这些搜索算法的原理和实现方式,能够帮助我们高效地查找指定元素。
5. 总结在第四章中,我们学习了数据结构、算法、排序算法、搜索算法等重要的知识点。
这些知识点对于我们理解计算机科学和编程十分重要,因此我们需要认真学习和掌握。
在实际编程中,我们需要根据具体的问题选择合适的数据结构和算法,提高程序的效率和性能。
希望通过对这些知识点的深入研究和总结,能够对大家的学习有所帮助。
严蔚敏《数据结构(c语言版)习题集》答案第四章 串
《一定能摸到红球吗?》说课稿林银花一、教材说明:1、课题:《一定能摸到红球吗?》2、本节内容的地位和作用在现代社会中,人们面临着更多的机会和选择,常常需要在不确定情境中作出合理的决策,概率正是通过对不确定现象和事件发生的可能性的刻画,来为人们更好的制定决策提供依据和建议.本节内容又是义务教育阶段,唯一培养学生从不确定的角度来观察世界的数学内容,让学生了解可能性是普遍的,有助于他们理解社会,适应生活.3、教学目标设计:(1)认知目标:(A)经历猜测.实验.收集与分析试验结果等过程(B)体会事件的发生的不确定性知道事情发生的可能性有多大。
(2)、能力目标:(A)经历游戏等的活动过程,初步认识确定事件和不确定事件(B)在与其它人交流的过程中,能合理清晰地表达自己的思维过程;(3)、情感目标:(A)通过创设游戏情境,让学生主动参与,做“数学实验”,激发学生学习的热情和兴趣,激活学生思维。
(B)在与他人的合作过程中,增强互相帮助、团结协作的精神。
(C)体会到在生活中我们可以从确定和不确定两方面分析一件事情.4、本课重点、难点分析:学习的重点是初步体验事情发生的确定性和不确定性.学习的难点是确定事件发生的可能性大小.学习本节知识应注意猜测,试验,收集与分析实验结果,从中体会事件发生的可能性及大小.二、教学对象分析:1、初一学生性格开朗活泼,对新鲜事物特别敏感,且较易接受,因此,教学过程中创设的问题情境应较生动活泼,直观形象,且贴近学生的生活,从而引起学生的有意注意。
2、初一学生的概括能力较弱,推理能力还有待不断发展,所以在教学时,可让学生充分试验,收集,分析,帮助他们直观形象地感知。
3、初一学生已经具备了一定的学习能力,所以本节课中,应多为学生创造自主学习、合作学习的机会,让他们主动参与、勤于动手、从而乐于探究。
三、教学策略及教法设计:【策略】课堂组织策略:创设贴近学生生活,生动有趣的问题情境,开展活泼、主动、有效的数学活动,组织学生主动参与、勤于动手、积极思考,使他们在自主探索和合作交流的过程中真正理解和掌握概率有关内容。
武汉理工数据结构ch4
串中任意个连续字符组成的子序列称为该串的子串, 串中任意个连续字符组成的子序列称为该串的子串,包含子 子串 串的串相应地称为主串 主串。 串的串相应地称为主串。通常将子串在主串中首次出现时的 该子串的首字符对应的主串中的序号, 该子串的首字符对应的主串中的序号,定义为子串在主串中 位置。例如, 的位置。例如,设A和B分别为 A=“This string” B=“is is” A= This is a string B= is 的子串, 为主串。 中出现了两次, 则B是A的子串,A为主串。B在A中出现了两次,其中首次出 现所对应的主串位置是3 因此, 中的序号(或位置) 现所对应的主串位置是3。因此,称B在A中的序号(或位置) 为3。 特别地,空串是任意串的子串,任意串是其自身的子串。 特别地,空串是任意串的子串,任意串是其自身的子串。 两个串相等的 当且仅当这两个串的值相等。 称两个串相等的,当且仅当这两个串的值相等。即只有当 两个串的长度相等,且各个对应位置的字符相等时才相等。 两个串的长度相等,且各个对应位置的字符相等时才相等。
武汉理工大学
通常在程序中使用的串可分为两种:串变量和串常量。 通常在程序中使用的串可分为两种:串变量和串常量。 串常量和整常数、实常数一样,在程序中只能被引用但 串常量和整常数、实常数一样, 不能改变其值,即只能读不能写。 不能改变其值,即只能读不能写。通常串常量是由直接 量来表示的,例如语句Error( overflow”) Erro,例如语句Error( overflow )中“overflow 是直接量。但有的语言允许对串常量命名, 是直接量。但有的语言允许对串常量命名,以使程序易 易写。 C++中 读、易写。如C++中,可定义 path[]=“dir/bin/appl dir/bin/appl”; const char path[]= dir/bin/appl ; 这里path是一个串常量,对它只能读不能写。 path是一个串常量 这里path是一个串常量,对它只能读不能写。串变 量和其它类型的变量一样, 量和其它类型的变量一样,其取值是可以改变的
东华大学数据结构期末复习题
第1章绪论一、选择题1.算法的计算量的大小称为计算的()。
A.效率 B. 复杂性 C. 现实性 D. 难度2.算法的时间复杂度取决于()A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性4.一个算法应该是()。
A.程序B.问题求解步骤的描述C.数据结构+程序D.以上都不对.5.下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6.下面说法错误的是()(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指随问题规模的增大,算法执行时间的增长率。
(4)空间复杂度是算法所需存储空间的量度。
A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
A.循环队列 B. 链表 C. 哈希表 D. 栈9.连续存储设计时,存储单元的地址()。
A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续10.以下属于逻辑结构的是()。
A.顺序表 B. 哈希表 C.有序表 D. 单链表第2章线性表一、选择题1.下述哪一条是顺序存储结构的优点?()A.存储密度大B.插入运算方便C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?()A.线性表采用顺序存储,必须占用一片连续的存储单元。
数据结构 第四章 章节重点概要
第四章串串是字符串的简称,可以将它看作一种特殊的线性表,其数据元素仅由一个字符组成。
计算机非数值处理的对象经常是字符串,如在汇编和高级语言的编译程序中,源程序和目标程序都是字符串数据;在事件处理程序中,顾客的姓名、地址、货物的产地、名称等,一般也是作为字符串处理的。
另外串还具有自身的特性,常常把一个串作为一个整体来处理,因此,一般线性表和串的操作有较大区别,本章主要讨论串的基本概念和存储结构,通过本章的学习,读者应掌握串的一些基本运算。
4.1 串及基本运算4.1.1 串的基本概念1.串的定义串是由零个或多个任意字符组成的字符序列。
一般记作:s="s1 s2 … s n""其中s 是串名;用双引号作为串的定界符,引号引起来的字符序列为串值,引号本身不属于串的内容;a i(1≤i≤n)是一个任意字符,它称为串的元素,是构成串的基本单位,i是它在整个串中的序号; n为串的长度,表示串中所包含的字符个数,如:s="I’m a student!",串的长度为14,当n=0时,称为空串,如:s="",通常记为Ф。
2.几个术语子串与主串:串中任意连续的字符组成的子序列称为该串的子串。
包含子串的串相应地称为主串。
子串的位置:子串的第一个字符在主串中的序号称为子串的位置。
串相等:如果两个串的长度相等且对应字符都相等,则称两个串是相等的。
例如:A=”China Beijing”,B=”Beijing”,C=”China”,则它们的长度分别为13、7和5,B和C是A的子串,B在A中的位置是7,C在A中的位置是1。
由一个或多个空格字符组成的串,称为空格串,其长度为串中空格字符的个数。
请注意空串和空格串的区别。
4.1.2 串的基本运算串的运算有很多,下面介绍部分基本运算:1.求串长StrLength(s)操作条件:串s存在操作结果:求出串s的长度。
2.串赋值StrAssign(s1,s2)操作条件:s1是一个串变量,s2或者是一个串常量,或者是一个串变量(通常s2 是一个串常量时称为串赋值,是一个串变量称为串拷贝)。
北邮算法与数据结构4
数据结构---第四章 串 11
S2
Status SubString(HString &Sub, HString S, int pos, int len) //求串S从第pos个字符起长度为len的子串Sub { if ( (pos<1 || pos >S.length || len<0 || len > S.length-pos+1 ) return ERROR; if (Sub.ch) free(Sub.ch); if ( !len ) { Sub.ch=NULL; Sub.length=0; } else { if ( !(Sub.ch=(char *)malloc(len* sizeof(char)))) exit(OVERFLOW); Sub.ch[0..len-1]=S.ch[pos-1..pos+len-2]; Sub.length=len; } pos-1 0 S.length-1 return OK; } // SubString len
数据结构---第四章 串 2
4.1.2 串的常用基本操作 (1)用串常量赋值 用串变量赋值 (2)判定空串 (3)两串比较 (4)求串长 (5)串清空 (6)两串连接 (7)求子串 (8)子串定位 (9)子串置换 (10)插入子串 (11)删除子串 (12)串销毁 StrAssign(&T, chars) StrCopy(&T, S) StrEmpty(S) StrCompare(S, T) StrLength(S) ClearString(&S) Concat(&T, S1, S2) SubString(&Sub, S, pos, len) Index(S, T, pos) Replace(&S, T, V) StrInsert(&S, pos, T) StrDelete(&S, pos, len) DestroyString(&S)
东华大学c语言课程设计
东华大学c语言课程设计一、课程目标知识目标:1. 掌握C语言的基本语法和程序结构,包括变量声明、数据类型、运算符、控制语句等。
2. 理解函数的定义与调用,能够编写简单的自定义函数,并进行参数传递。
3. 了解数组、指针和字符串的使用,能够运用它们进行数据操作和存储。
4. 掌握基本的文件操作,如文件的打开、读写和关闭。
技能目标:1. 能够使用C语言编写简单的程序,解决问题并进行调试。
2. 能够运用逻辑思维和算法设计,解决基本的算法问题。
3. 能够分析并优化代码,提高程序的执行效率。
4. 能够通过编写代码,实现数据的存储和提取,进行文件操作。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习编程的热情。
2. 培养学生的逻辑思维和问题解决能力,增强自信心。
3. 培养学生的团队协作意识,学会与他人共同解决问题。
4. 培养学生注重程序规范和代码质量,养成良好的编程习惯。
课程性质:本课程为东华大学计算机科学与技术专业的学科基础课,旨在让学生掌握C语言的基本知识和编程技能。
学生特点:学生具备一定的计算机基础,对编程有一定了解,但可能缺乏深入理解和实践经验。
教学要求:结合学生特点,通过理论讲解、案例分析和实践操作,使学生在掌握C语言知识的同时,提高编程能力和问题解决能力。
教学过程中注重培养学生的实际操作能力和创新思维,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. C语言概述:介绍C语言的发展历程、特点和应用领域,使学生了解C语言的重要性和学习价值。
相关教材章节:第一章 C语言概述2. 数据类型、运算符与表达式:讲解基本数据类型、变量声明与赋值,各类运算符的使用及表达式求值。
相关教材章节:第二章 数据类型与表达式3. 控制语句:介绍顺序结构、选择结构(if-else)、循环结构(for、while、do-while),以及跳转语句(break、continue、goto)。
相关教材章节:第三章 控制语句4. 函数:讲解函数的定义、调用、参数传递、返回值,以及递归函数。
数据结构第四章考试题库(含答案)
第四章串一、选择题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###01234~3.设有两个串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数组的值为()。
2022年东华理工大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
2022年东华理工大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、n个结点的完全有向图含有边的数目()。
A.n*nB.n(n+1)C.n/2D.n*(n-1)2、下列说法不正确的是()。
A.图的遍历是从给定的源点出发每个顶点仅被访问一次B.遍历的基本方法有两种:深度遍历和广度遍历C.图的深度遍历不适用于有向图D.图的深度遍历是一个递归过程3、若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式()。
A.单链表B.双向链表C.单循环链表D.顺序表4、动态存储管理系统中,通常可有()种不同的分配策略。
A.1B.2C.3D.45、有六个元素6,5,4,3,2,1顺序入栈,下列不是合法的出栈序列的是()。
A.543612B.453126C.346521D.2341566、下列关于无向连通图特性的叙述中,正确的是()。
Ⅰ.所有的顶点的度之和为偶数Ⅱ.边数大于顶点个数减1 Ⅲ.至少有一个顶点的度为1 A.只有Ⅰ B.只有Ⅱ C.Ⅰ和Ⅱ D.Ⅰ和Ⅲ7、循环队列放在一维数组A中,end1指向队头元素,end2指向队尾元素的后一个位置。
假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。
初始时为空,下列判断队空和队满的条件中,正确的是()。
A.队空:end1==end2;队满:end1==(end2+1)mod MB.队空:end1==end2;队满:end2==(end1+1)mod (M-1)C.队空:end2==(end1+1)mod M;队满:end1==(end2+1) mod MD.队空:end1==(end2+1)mod M;队满:end2==(end1+1) mod (M-1)8、在下述结论中,正确的有()。
①只有一个结点的二叉树的度为0。
②二叉树的度为2。
③二叉树的左右子树可任意交换。
④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。
数据结构A第4章(南邮)
2. 二维数组的顺序表示
二维数组a[m][n]映射到一维的存储空间时有两种顺 序:行优先和列优先。 大多数语言如PASCAL、BASIC、C、C++等都是按行优 先顺序存储的,FORTRAN是按列优先顺序存储的。
a[0][0] a[1][0]…a[m-1][0] a[0][1] a[1][1]…a[m-1][1] … a[0][n-1] a[1][n-1]…a[m-1][n-1]
下标为0的列 下标为1的列 … 下标为n-1的列 (b)列优先的顺序表示 列优先顺序存储的地址计算: loc(a[i][j])=loc(a[0][0])+(j*m+i)*k
第4章 数组和字符串
引
言
数组在算法设计中经常被使用,在本 章中,将数组作为一种抽象数据结构类型 加以讨论。 在自然科学中,矩阵常被用于解决许 多实际问题,在本章中介绍几类特殊矩阵 在存储表示上的特点以及稀疏矩阵的转置 算法的实现。
内容提要 1.介绍数组的概念 2.讨论数组抽象数据类型 3.讨论特殊矩阵的存储方法 4.讨论稀疏矩阵的顺序存储方法 5.讨论稀疏矩阵转置算法 6.讨论字符串的匹配算法
使用实例: Array1D <int> a(5) ; cout<<a;
程序4.2 应用一维数组类的主程序 #include "array1d.h" void main() { Array1D<int> a(5),b(8); Array1D<int> c; //采用缺省长度0 cin>>a; cout<<"a "<<a; cin>>b; cout<<"b "<<b; cout<<"c "<<c; cout<<"a[0]="<<a[0]<<"; "<<"b[5]="<<b[5]<<endl; c=b; cout<<"c=b, c "<<c; b=a; cout<<"b=a, b "<<b; }
Chapter04_串_数据结构(C语言版)_严蔚敏_配套课件
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)
数据结构(C++) 第4章 串
NCU-ZQP
11
4.2 串的存储表示
串的存储表示主要指串值的存储。 串的存储表示主要指串值的存储。 串值的存储 一个字符序列还可赋给串变量, 一个字符序列还可赋给串变量 , 作为变量的内容 串值) 需通过变量名进行访问。 (串值),需通过变量名进行访问。 串被看成由单个字符组成的特殊的线性表, 因此, 串被看成由单个字符组成的特殊的线性表 , 因此 , 线性表所用的存储结构基本上都可以应用到串上, 线性表所用的存储结构基本上都可以应用到串上 , 这里 所说的串是指串值。主要介绍: 所说的串是指串值。主要介绍: 串的定长顺序存储表示; 串的定长顺序存储表示; 串的堆分配存储表; 串的堆分配存储表; 串的块链存储表示; 串的块链存储表示;
NCU-ZQP 5
串的术语
当两个串的长度相等, 当两个串的长度相等,且对应位置的字符相 两个串相等。 同时,称这两个串相等 同时,称这两个串相等。 有两种串量可供使用,一种是串常量,另一 有两种串量可供使用,一种是串常量, 种是串变量。串常量具有固定串值 具有固定串值。 串变量的 种是串变量。串常量具有固定串值。而串变量的 内容串值是可以改变的,须用标识符对其命名。 内容串值是可以改变的,须用标识符对其命名。 例如: 例如: char *ch1, ch2[20]; ; ch1="Hello! "; strcpy (ch2, "Good! " ); ch1 和ch2 就是串变量名,它们的串值(内 就是串变量名,它们的串值( 分别是: 容)分别是:Hello!和Good!。 和 。
NCU-ZQP
char *s1="It is a car"; char *s2="jeep"; char *s3="car"; char *s4; int result;
数据结构第四章
T 插入串
S pos
T 插入后
A
A串部分被舍弃
MAXLEN
(3) 插入后串长(st+st+st≥MAXLEN且pos+st>MAXLEN,则A全部 字符被舍弃(不需后移),并且T在插入时也有部分字符被舍弃
S pos
A 插入前
S pos
T 插入后
MAXLEN 舍弃
T 插入串
S.ch 0 1 2 3 4 5 6 7 8 9 10 … abcde fgh i j k
st
MAXLEN-1 …
串的长度st+1
省级精品课程配套教材 高等学校计算机类“十二五” 规划2教. 在材串尾存储一个特殊字符作为串的终结符
比如C语言中用’\0’来表示串的结束。 char s[MAXLEN];
5 { /*连接后串长小于MAXLEN */
6 for(i=S->last; i<=S->last+st; i++)
7
S->ch[i+1]=T.ch[i-S->last];
8 S->last=S->last+st+1;
省级精品课程配套教材
高等学校计算机类“十二五”
规划教材
第四章 串
1.教学目的:
掌握串的定义、基本运算的实现及基本串匹配算法。
2.教学要求:
①理解串的七种基本运算的定义。 ②掌握利用这些基本运算来实现串的其它各种运算的方法。 ③掌握在顺序存储结构上实现串的各种操作的方法。 ④理解KMP算法,了解NEXT函数和改进NEXT函数的定义和计算。 ⑤理解串名的存储映象和在堆存储结构实现串操作的方法。
东华理工大学软件工程 数据结构 2012-2013试题
}
}
public:
LList(int size=DefaultListSize) { init(); }
~LList() { removeall(); } // Destructor
bool insert(const Elem&item);
………………………..
};
其中insert函数为插入函数,它将元素item插入到fence位置后,如果插入成功,则函数返回true,否则返回为false,写出insert函数的实现。
bool pop(Elem& it)//出栈函数,将栈顶元素出栈并赋值给it,如果出栈成功,则函数返回为true,否则函数返回为false
bool isEmpty()//判断栈是否为空函数,如果栈为空,则函数返回为true,否则返回为false
队列ADT的函数有:
bool enqueue(const Elem& it)//入队函数,将元素it入队,如果入队成功,函数返回为true,否则返回为false
fence = tail = head = new Link<Elem>;
leftcnt = rightcnt = 0;
};
void removeall() { // Return link nodes to free store
while(head != NULL) {
fence = head;
head = head->next;
一、填空题(20分,每题2分)
1、线性表是一种典型的_________结构。
2、在一个长度为n的顺序表中删除第i个元素,则需移动______个元素。
《数据结构(C语言版 第2版)》(严蔚敏 著)第四章练习题答案
《数据结构(C语言版第2版)》(严蔚敏著)第四章练习题答案第4章串、数组和广义表1.选择题(1)串是一种特殊的线性表,其特殊性体现在()。
A.可以顺序存储B.数据元素是一个字符C.可以链式存储D.数据元素可以是多个字符若答案:B(2)串下面关于串的的叙述中,()是不正确的?A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储答案:B解释:空格常常是串的字符集合中的一个元素,有一个或多个空格组成的串成为空格串,零个字符的串成为空串,其长度为零。
(3)串“ababaaababaa”的next数组为()。
A.012345678999 B.012121111212 C.011234223456 D.0123012322345答案:C(4)串“ababaabab”的nextval为()。
A.010104101B.010102101 C.010100011 D.010101011答案:A(5)串的长度是指()。
A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数答案:B解释:串中字符的数目称为串的长度。
(6)假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。
A.808 B.818 C.1010 D.1020答案:B解释:以行序为主,则LOC[5,5]=[(5-1)*100+(5-1)]*2+10=818。
(7)设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。
A.BA+141 B.BA+180 C.BA+222 D.BA+225答案:B解释:以列序为主,则LOC[5,8]=[(8-1)*8+(5-1)]*3+BA=BA+180。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1 串类型的定义
• 串和线性表的区别:
1)串的逻辑结构和线性表极为相似,区别仅在于串 的数据对象约束为字符集 2)串的基本操作和线性表有很大差别。在线性表的 基本操作中,大多以“单个元素”作为操作对象, 如:在线性表中查找某个元素、存取某个元素、 在某个位置上插入一个元素和删除一个元素等; 而在串的基本操作中,通常以“串的整体”作为 操作对象,如:在串中查找某个子串、求取一个 子串、在串的某个位置上插入一个子串以及删除 一个子串等
20
4.1 串类型的定义
• 例如,可利用判等、求串长和求子串等操作实现定位 函数Index(S,T,pos)。 • 算法的基本思想为:在主串S中取从第i(i的初值为pos) 个字符起、长度和串T相等的子串和串T比较,若相 等,则求得函数值为i,否则i值增1直至串S中不存在 和串T相等的子串为止。
• 即求StrCompare(SubString(S, i, StrLength(T)), T)==0成立的i 值。
13
4.1 串类型的定义
三、串的基本操作
●定义下列几个变量:
Char s1[20]=“dirtreeformat”,s2[20]=“file.mem”; Char s3[30],*p; int result; 1)串复制(copy) char *StrCopy(char to,char from); 该函数将串from复制到串to中,并且返回一个指向串 to的开始处的指针。 例如:StrCopy(s3,s1); //s3=“dirtreeformat”
14
4.1 串类型的定义
三、串的基本操作
2)联接(concatenation) char StrConcat(char to,char from) 该函数将串from复制到串to的末尾,并且返回一个 指向串to的开始处的指针。 例如:StrConcat(s3,”/”) //s3=“dirtreeformat/” StrConcat(s3,s2); //s3=“dirtreeformat/file.mem”
10
4.1 串类型的定义
二、串的抽象数据定义 P71 SubString(&Sub,S,pos,len) 串S存在,1≦pos≦StrLength(S)且0≦len≦StrLength(S)pos+1; 用Sub返回串S的第pos个字符起长度为len的子串 Index(S,T,pos) 串S和T存在,T是非空,1≦pos≦StrLength(S), 若主串S中存在和串T值相同的子串,则返回它在主串S中 第pos个字符之后第一次出现的位置,否则函数值为0 Replace(&S,T,V) 串S,T和V存在,T是非空串, 用V替换主串S中出现的所有与T相等的不重叠的子串 11
21
4.1 串类型的定义
三、串的基本操作 例2、串的定位index(s,t,pos)。在主串中取从第i个字符起、长 度和串T相等的子串和T比较,若相等,则求得函数值为i, 否则值增1直至S中不存在和串t相等的子串为止。 int index(string S, string T, int pos){ if(pos>0){ n=StrLength(S); m=StrLength(T); i=pos; while(i<n-m+1){ //判断是否越界,确保定位范围不超出主串 SubString(sub, s, i, m); if(StrCompare(sub,T)!=0) ++i; else return(i);} } 22 return(0); }
第四章 串
4.1 串类型的定义 4.2 串的表示和实现 4.2.1 定长顺序存储表示 4.2.2 堆分配存储表示 4.2.3 串的块链存储表 *4.4 串操作应用举例 4.4.1 文本编辑
1
第四章 串
本章要点: 熟练掌握串的逻辑结构特性 熟悉串的六种基本操作的定义,并利用它们 实现串的其他各种操作的方法 熟练掌握串在定长顺序存储结构下的各种基 本运算 掌握串在块链和堆存储结构下的各种基本运 算 了解串操作的应用方法和特点
6
4.1 串类型的定义
一、串和基本概念(3)
通常在程序中使用的串可分为两种:串变量和串常量。 ●串常量和整常数、实常数一样,在程序中只能被引 用但不能改变其值,即只能读不能写。通常串常量是 由直接量来表示的,例如语句Error(“overflow”)中 “overflow”是串常量。但有的语言允许对串常量命名, 以使程序易读、易写。如C++中,可定义 const char path[ ]=“dir/bin/appl”; 这里path是一个串常量,对它只能读不能写。 ●串变量和其它类型的变量一样,其取值可以改变的。 如:String s;s=“ABC”; s=“DEF”;
一、串和基本概念(1) ●串(String)是零个或多个字符组成的有限序列。 S=„a1a2a3…an‟ (n >= 0) 其中S 是串名,单引号或双引号(本身不属于串, 目的是避免与变量名或数的常量混淆)括起来的字 符序列是串值;ai(1≦i≦n)可以是字母、数字或其 它字符;串中所包含的字符个数称为该串的长度。 长度为零的串称为空串(Empty String),它不包含 任何字符。 ●将仅由一个或多个空格组成的串称为空白串 注意:空串和空白串的不同,例如“ ”和“”分 别表示长度为1的空白串和长度为0的空串。
4.1 串类型的定义
二、串的抽象数据定义 P71 StrInsert(&S,pos,T) 串S和T存在,1<=pos<=StrLength(S)+1, 在串S的第pos个字符之前插入串T StrDelete(&S,pos,len) 串S存在,1<=pos<=StrLength(S)-len+1 从串中删除第pos个字符起长度为len的子串 DestroyString(&S) 串S存在, 则串S被销毁 }ADT String
23
4.2 串的表示和实现
4.2.1定长顺序存储表示 • 串的实际长度可在预定义长度的范围内随意 设定,超过预定义长度的串值则被舍去,称 之为“截断” • 按这种串的表示方法实现的串的运算时,其 基本操作为“字符序列的复制” • 串的结束:C语言中以字符‘\0‟表示串值的 终结,0号单元存放串的长度.
2
第四章 串
难点: 串运算的实现,特别是顺序串上子串 定位的运算 串在各种存储结构下的应用方法
3
第四章 串
• 计算机上的非数值处理的对象基本上为字 符串数据 • 处理字符串数据比处理整数和浮点数要复 杂得多 • 讨论串的逻辑结构特性及其在顺序存储结 构和链表存储结构下的各种基本运算
4
4.1 串类型的定义
8
4.1 串类型的定义
二、串的抽象数据定义 P71
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) chars是字符常量。生成一个其值等于chars的串T。 StrCopy(&T,S) 串S存在,由串S复制得串T StrEmpty(S) 串S存在,若S为空串,返回真否则返回假
12
4.1 串类型的定义
三、串的基本操作
对于串的基本操作,许多高级语言均提供了相应的 运算或标准库函数来实现。在上述13种抽象数据类 型操作中, StrAssign 串赋值 StrCompare 串比较 StrLength(S) 串求长 Concat 串连接 SubString 求子串 5种操作构成串类型的最小操作子集。
5
4.1 串类型的定义
一、串和基本概念(2) ●子串:串中任意个连续字符组成的子序列称为该串的子串. ●主串:包含子串的串相应地称为主串。 ●位置:通常将子串在主串中首次出现时的该子串的首字符对 应在主串中的序号,定义为子串在主串中的位置。 例如,设A和B分别为 A=“This is a string” B=“is” 则B是A的子串,A为主串。B在A中出现了两次,其中首次出 现所对应的主串位置是3。因此,称B在A中的位置为3 ●串相等:两个串的长度相等,并且对应位置的字符都相等 ●空串 是任意串的子串,任意串是其自身的子串。
17
4.1 串类型的定义
三、串的基本操作 • 提取子串的算法示例
pos+len -1 curLen-1
pos+len -1 curLen
18
4.1 串类型的定义
• 串赋值: 例:串 st = “university”, 使用示例 newSt = st;newChar = st[1]; 数组赋值 newSt = “university” 提取字符 newChar = „n‟ • 串连接 例:串 st1 = “beijing ”, st2 = “university”, 使用示例 st1 += st2; 连接结果 st1 = “beijing university” st2 = “university”
15
4.1 串类型的定义
三、串的基本操作
3)串比较(compare) int strcmp(char s1,char s2); 该函数比较串s1和串s2的大小,当返回值小于0,等 于0或大于0时分别表示s1<s2,s1=s2或s1>s2 例如: result=StrCompare(“Joseph”,”Joe”) result>0 result= StrCompare(“12”,”12”); result=0 result= StrCompare(“Joe”,”Joseph”); result<0
16
4.1 串类型的定义