数据结构期末复习资料

合集下载

数据结构复习资料(亲自整理)

数据结构复习资料(亲自整理)

数据结构复习资料(亲自整理)1、链表是一种存储数据的链式结构,每个数据之间都是相关联的。

2、线性结构是一个有序数据元素的集合,包括线性表、栈、队列、双队列、数组和串。

3、树是由n(n>=1)个有限节点组成一个具有层次关系的集合,而二叉树是每个结点最多有两个子树的有序树。

二叉树与树的主要差别在于,二叉树结点的最大度数为2,而树中结点的最大度数没有限制;二叉树的结点有左、右之分,而树的结点无左、右之分。

4、堆是一种可以被看做一棵树的数组对象,总是满足某个节点的值总是不大于或不小于其父节点的值,且堆总是一棵完全二叉树。

5、二叉排序树是一种满足以下递归定义的二叉树:若左子树非空,则左子树所有节点的值均小于它的根节点;若右子树非空,则右子树所有节点的值均大于于它的根节点;左右子树也分别为二叉排序树。

1、在已知前序遍历和中序遍历的情况下,可以通过画树的方法求得后序遍历。

具体步骤如下:首先根据前序遍历的特点,确定根节点;然后观察中序遍历,将左子树和右子树分别确定下来;接着对左子树和右子树分别进行递归,直到遍历完所有节点,最后得到后序遍历。

2、树和二叉树之间可以相互转换。

将树转换为二叉树的方法是:对于每个节点,将其第一个孩子作为其左孩子,将其兄弟作为其右孩子。

将二叉树转换为树的方法是:对于每个节点,将其右孩子作为其兄弟。

3、二叉树线索化是将二叉树中的空指针指向该节点在中序遍历中的前驱或后继节点的过程。

在线索二叉树中,一个结点是叶结点的充要条件为:左、右标志均是1.4、邻接表是图的一种链式存储结构,用于表示图中每个节点的邻居节点。

每个节点都有一个链表,存储着与该节点相邻的节点。

邻接表是一种图的存储结构,对于每个顶点建立一个单链表,单链表中的结点表示依附于该顶点的边(对于有向图是以该顶点为尾的弧)。

邻接表中的表结点和头结点分别表示边和顶点,包含信息如下:表结点adjvex(邻接点)。

nextarc(指向下一个表结点)(权值等信息);头结点data(顶点信息)和firstarc(指向第一个表结点)。

数据结构期末考试复习题资料

数据结构期末考试复习题资料

数据结构期末考试复习题资料一.单项选择题1.算法指的是()。

A.计算方法B.排序方法C.特定问题求解步骤的描述D.调度方法2.下列数据结构中,()是非线性结构。

A.栈B.队列C.完全二叉树D.堆3.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。

A.顺序表B.双向链表C.单循环链表D.带头结点的双循环链表4.队列的操作原则是()A.先进先出B.后进先出C.先进后出D.不分顺序5.栈和队列的共同特点是()。

A.都是先进先出B.都是先进后出C.都是只允许在端点处插入和删除D.没有共同点6.在一棵高度为k 的满二叉树中,结点总数为()。

A.2k-1 B.2k C.2k-1 D.⎣log 2 k ⎦+ 17.在下列存储形式中,哪一个不是树的存储形式?()A.双亲链表表示法B.孩子链表表示法C.孩子兄弟链表表示法D.顺序存储表示法8.n 个结点的完全有向图含有边的数目为()。

A.n*n B.n*(n+1) C.n/2 D.n*(n-1)9.n 个顶点的强连通图至少有()条边。

A.n B.n-1 C.n+1 D.n(n-1)10、高度为k 的二叉树的最大结点数为()。

A、2kB、2k-1C、2k–1D、2k-1–111、下列哪一种图的邻接矩阵是对称矩阵?()A、有向图B、无向图C、AOV 网D、AOE 网12、在下列存储形式中,哪一个不是树的存储形式?()A、双亲表示法B、孩子表示法C、孩子兄弟表示法D、顺序存储表示法13、下面哪一方法可以判断出一个有向图是否有环。

()A、深度优先遍历B、拓扑排序C、求最短路径D、广度优先遍历14.适用于折半查找的表的存储方式及元素排列要求为()。

A.链接方式存储,元素无序B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序15、一个算法应该是()。

A、程序B、特定问题求解步骤的描述C、要满足五个基本特性D、A 和C16、算法分析的两个主要方面是()。

数据结构期末复习资料

数据结构期末复习资料

第一章1、数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。

数据结构(Data Structure):相互之间存在一种或多种特定关系的数据元素的集合。

2、数据结构的形式定义:二元组Data_Structure=(D,S) 其中,D 是数据元素的有限集,S 是D 上关系的有限集。

3、数据元素之间关系的映像:1、顺序映像(顺序存储结构):以相对的存储位置表示后继关系。

2、非顺序映像(链式存储结构):借助指针元素存储地址的指针表示数据元素之间的逻辑关系。

任何一个算法的设计取决于数据(逻辑)结构,其实现取决于物理结构。

4、 算法的定义:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。

特性:有穷性、确定性、可行性、输入、输出5、 算法的评价——衡量算法优劣的标准正确性(correctness):满足具体问题的需求可读性(readability):易读、易理解健壮性(robustness):当输入数据非法时,算法能够做出反应或进行处理效率与低存储量:执行时间短、存储空间小第二章 1、线性表是一种最简单的线性结构。

线性结构 是一个数据元素的有序(次序)关系特点:存在唯一的一个“第一个”的数据元素;存在唯一的一个“最后一个”的数据元素;除第一个数据元素外,均有唯一的前驱;除最后一个数据元素外,均有唯一的后继2、线性表类型的实现——顺序映像 定义:用一组地址连续的存储单元依次存放线性表中的数据元素。

⏹ 以“存储位置相邻”表示有序对<ai -1,ai >,则有:LOC (ai ) = LOC (ai -1) + l 其中l 是一个数据元素所占存储量LOC (ai ) = LOC (a 1) + (i -1)×l⏹ 特点:1、实现逻辑上相邻—物理地址相邻2、实现随机存取3、若假定在线性表中任何一个位置上进行插入的概率都是相等的,则移动元素的期望值为:∑+=+-+=11)1(11n i is i n n E 2n = 若假定在线性表中任何一个位置上进行删除的概率都是相等的,则移动元素的期望值为:∑=-=n i dl i n n E 1)(121-=n 4、 线性表类型的实现——链式映像 线性链表 特点:用一组地址任意的存储单元存放线性表中的数据元素。

数据结构 期末复习

数据结构    期末复习

第30页
将一棵树转换为二叉树的方法:
⑴ 树中所有相邻兄弟之间加一条连线。 ⑵ 对树中的每个结点,只保留其与第一个孩子结点之间的 连线,删去其与其它孩子结点之间的连线。 ⑶ 以树的根结点为轴心,将整棵树顺时针旋转一定的角度, 使之结构层次分明。
A A B E E F G E F G F C D A D
NK
K N L
LM
M
第28页
1、该二叉树结点的前序遍历的序列为( C)。 A. E、G、F、A、C、D、B B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F D. E、G、A、C、D、F、B
2、该二叉树结点的中序遍历的序列为( A)。
A. A、B、C、D、E、G、F B. E、A、G、C、F、B、D C. E、A、C、B、D、G、F D. D、C、A、F、G、E
B
C
D
B
C
H
H
H
G
2. 森林转换为二叉树
森林转换为二叉树的方法为: (1)将森林中的每棵树转换成相应的二叉树。 (2)第一棵二叉树不动,从第二棵二叉树开始,依次把后 一棵二叉树的根结点作为前一棵二叉树根结点的右孩子,当 所有二叉树连在一起后,所得到的二叉树就是由森林转换得 到的二叉树。
第32页
森林转换为二叉树的过程
A C
A
B C D F H I J E G B C D
A
E F H I J G
G D F
B
H
I J
第35页
例、设森林F中有三棵树,第一、第二和第三棵树的结点个数 分别为M1、M2和M3。与森林F对应的二叉树根结点的右子树上 的结点个数是:
A)M1 B)M1+M2 C)M3 D)M2+M3

(完整word版)大学数据结构期末知识点重点总结(考试专用)

(完整word版)大学数据结构期末知识点重点总结(考试专用)

第一章概论1。

数据结构描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、存储结构和运算2。

数据的逻辑结构是从具体问题抽象出来的数学模型,反映了事物的组成结构及事物之间的逻辑关系可以用一组数据(结点集合K)以及这些数据之间的一组二元关系(关系集合R)来表示:(K, R)结点集K是由有限个结点组成的集合,每一个结点代表一个数据或一组有明确结构的数据关系集R是定义在集合K上的一组关系,其中每个关系r(r∈R)都是K×K上的二元关系3.数据类型a。

基本数据类型整数类型(integer)、实数类型(real)、布尔类型(boolean)、字符类型(char)、指针类型(pointer)b。

复合数据类型复合类型是由基本数据类型组合而成的数据类型;复合数据类型本身,又可参与定义结构更为复杂的结点类型4.数据结构的分类:线性结构(一对一)、树型结构(一对多)、图结构(多对多)5。

四种基本存储映射方法:顺序、链接、索引、散列6。

算法的特性:通用性、有效性、确定性、有穷性7.算法分析:目的是从解决同一个问题的不同算法中选择比较适合的一种,或者对原始算法进行改造、加工、使其优化8.渐进算法分析a.大Ο分析法:上限,表明最坏情况b.Ω分析法:下限,表明最好情况c.Θ分析法:当上限和下限相同时,表明平均情况第二章线性表1.线性结构的基本特征a.集合中必存在唯一的一个“第一元素”b。

集合中必存在唯一的一个“最后元素"c.除最后元素之外,均有唯一的后继d。

除第一元素之外,均有唯一的前驱2.线性结构的基本特点:均匀性、有序性3。

顺序表a.主要特性:元素的类型相同;元素顺序地存储在连续存储空间中,每一个元素唯一的索引值;使用常数作为向量长度b。

线性表中任意元素的存储位置:Loc(ki)= Loc(k0)+ i * L(设每个元素需占用L个存储单元)c. 线性表的优缺点:优点:逻辑结构与存储结构一致;属于随机存取方式,即查找每个元素所花时间基本一样缺点:空间难以扩充d.检索:ASL=【Ο(1)】e。

数据结构期末重点复习必过

数据结构期末重点复习必过

数据结构期末重点复习必过1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。

◆ 数据:指能够被计算机识别、存储和加工处理的信息载体。

◆ 数据元素:就是数据的基本单位,在某些情况下数据项组成。

◆ 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。

◆ 数据结构:指的是数据之间的相互关系,即数据的组织形式。

一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。

◆ 逻辑结构:指各数据元素之间的逻辑关系。

◆ 存储结构:就是数据的逻辑结构用计算机语言的实现。

◆ 线性结构:数据逻辑结构中的一类,它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。

线性表就是一个典型的线性结构。

◆ 非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。

1.2 试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。

◆例如有一张学生成绩表,记录了一个班的学生各门课的成绩。

按学生的姓名为一行记成的表。

这个表就是一个数据结构。

每个记录(有姓名,学号,成绩等字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录)。

这几个关系就确定了这个表的逻辑结构。

那么我们怎样把这个表中的数据存储到计算机里呢? 用高级语言如何表示各结点之间的关系呢?是用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢?这就是存储结构的问题,我们都是从高级语言的层次来讨论这个问题的。

(所以各位赶快学C语言吧)。

最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询,修改,删除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了。

数据结构期末考试重点复习资料

数据结构期末考试重点复习资料

期末考试重点复习资料二、考试重点内容第一章绪论1、时间复杂度和空间复杂度的计算。

要求能够计算出程序的执行次数。

2、各种概念:数据结构、数据项、数据元素第二章线性表1、单链表的各种操作,包括单链表的建立、插入、删除结点的操作语句序列2、单链表(带头结点、不带头结点、循环单链表)的逆置运算。

3、双链表的插入和删除操作语句序列。

4、单链表的直接插入排序运算。

5、静态单链表的插入和删除操作。

6、二个有序单链表的合并、一个单链表拆分为多个单链表第三章栈和队列1、栈的输入序列和输出序列、递归函数的输出结果2、循环队列的入队、出队操作以及有效元素个数的计算第四章串1、KMP算法中的next和nextval值的计算第五章数组和广义表1、二维数组任意元素地址的计算2、稀疏矩阵的转置算法3、广义表的两个操作函数:取表头和表尾第六章树和二叉树1、二叉树的性质(特别是完全二叉树的性质,例如求完全二叉树的深度等)2、二叉树的遍历(特别是中序和先序遍历,要求能够使用堆栈完成非递归遍历编程和递归算法编程,在遍历基础上的各种操作,例如求二叉树的叶子数、二叉树结点数等操作,包括有编程算法和编程填空题)3、线索二叉树(特别是中序线索化二叉树和中序线索化二叉树的中序遍历,包括编程算法和编程填空题,希望大家着重研究)4、哈夫曼编码(主要是应用题,包括哈夫曼的编码与解码,也包括哈夫曼树的特点)5、树与森林在转化成二叉树时,左右子树的结点数有何特点)6、树的层次遍历(使用队列完成、借助树的层次遍历可以判断二叉树是否为完全二叉树)、判断二叉树是否为排序二叉树等,可能有编程题或编程填空题)补充:二叉树的物理存储结构(链式和顺序存储)*第七章图1、图的两种物理存储方式(邻接矩阵与邻接表存储表示)2、图的生成树与最小生成树(生成树特点)、图的遍历3、求最小生成树的两种算法(重点是PRIM 算法,特别会写出用PRIM算法求最小生成树的过程)4、使用迪杰斯特拉算法求单源最短路径,写出求解过程5、拓扑排序6、求关键路径,要求写出事件和活动的最早和最晚开始时间,深刻理解关键路径的含义。

《数据结构》复习资料

《数据结构》复习资料

《数据结构》复习资料《数据结构》复习资料1⼀、选择题1. ⼀棵⼆叉树中第6层上最多有()个结点。

A. 2B. 31C. 32D. 642. 顺序表中数据元素的存取⽅式为()。

A. 随机存取B. 顺序存取C. 索引存取D. 连续存取3. 设有⽆向图G=(V,E),其中顶点集合V={a,b,c,d,e,f},边集合E={(a,b), (a,e), (a,c), (b,e), (c,f), (f,d), (e,d)}。

对G进⾏深度优先遍历,正确的遍历序列是()。

A. a,b,e,c,d,fB. a,c,f,e,b,dC. a,e,b,c,f,dD. a,e,d,f,c,b4. 在待排元素序列基本有序的前提下,效率最⾼的排序⽅法是()。

A. 插⼊B. 选择C. 快速D. 归并5. 设表中含100个数据元素,⽤折半查找法进⾏查找,则所需最⼤⽐较次数为()。

A. 50B. 25C. 10D. 76. 设哈希表地址范围为0~19,哈希函数H(key)=key%17,使⽤⼆次探测再散列法处理冲突。

若表中已存放有关键字值为6、22、38、55的记录,则再放⼊关键字值为72的记录时,其存放地址应为()。

A. 2B. 3C. 4E. 8F. 以上都不对7. 设对下图从顶点a出发进⾏深度优先遍历,则()是可能得到的遍历序列。

A. acfgdebB. abcdefgC. acdgbefD. abefgcd8. 若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序⽅法是()。

A. 快速排序B. 堆排序C. 归并排序D. 直接插⼊排序9. 设有⼀组关键字值(46,79,56,38,40,84),则⽤堆排序的⽅法建⽴的初始堆为()。

A. 79,46,56,38,40,84B. 84,79,56,38,40,46C. 84,79,56,46,40,38D. 84,56,79,40,46,3810. 设⼴义表L=((a,()),b,(c,d,e)),则Head(Tail(Tail(L)))的值为()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》期末考试复习资料●考试时间:12月27日周一下午14:00-15:30●考试地点:创新楼110●复习范围:《算法与数据结构》第一至第八章●考试题型:◆选择题(每小题1.5分,共30分)◆判断题(每小题2分,共20分)◆填空题(每空2分,共20分)◆应用题(每小题5分,共20分)◆设计题(每小题5分,共10分)●知识概要:第1章算法与程序1.概念和术语数据:是能输入到计算机中并能被计算机程序处理的符号的总称。

数据元素:是数据的基本单位,它在计算机处理和程序设计中通常作为一个整体进行考虑和处理。

一个数据元素可由若干数据项组成。

数据对象:是具有相同特征的数据元素的集合,是数据的一个子集。

数据结构:是数据元素的组织形式,或数据元素相互之间存在一种或多种特定关系的集合。

数据的逻辑结构:是指数据结构中数据元素之间的逻辑关系。

数据的存储结构:是数据的逻辑结构在计算机内存中的存储方式,又称物理结构。

数据类型:是一组具有相同性质的操作对象以及该组操作对象上的运算方法的集合。

抽象数据类型:是指一个数学模型以及在该模型上定义的一套运算规则的集合。

算法:建立在数据结构基础上的,为解决问题而采取的步骤和方法。

2.逻辑结构的四种基本形态根据数据元素之间关系的不同特征,通常有下列四类基本结构:(1)集合:结构中的数据元素间除了“同属于一个集合”的关系外,别无其它关系。

(2)线性结构:结构中的数据元素之间存在一个对一个的关系。

(3)树型结构:结构中的数据元素之间存在一个对多个的关系。

(4)图型结构或网状结构:结构中的数据元素之间存在多个对多个的关系。

3.数据存储结构的基本组织方式数据存储结构有顺序和链式两种方式。

(1)顺序存储结构的特点:要借助数据元素在存储器中的相应位置来体现数据元素相互间的逻辑关系,常用高级编程语言中的“一维数组”来描述或实现。

(2)链式存储结构的特点:通过表示数据元素存储地址的指针来表示数据元素之间的逻辑关系,通常用链表来实现。

在顺序存储结构的基础上,又可延伸变化出另外两种存储结构,即索引存储和散列存储。

(1)索引存储就是在数据文件的基础上增加了一个索引表文件。

通过索引表建立索引,可以把一个顺序表分成几个顺序子表,其目的是在查询时提高查找效率,避免盲目查找。

(2)散列存储就是通过数据元素与存储地址之间建立起某种映射关系,使每个数据元素与每一个存储地址之间尽量达到一一对应的目的。

这样,查找时同样可大大提高效率。

4.数据结构的研究内容数据结构的核心研究内容包括三个方面:数据的逻辑结构、存储结构以及相应的基本操作运算的定义和实现。

5.算法的五个重要特征(1)有穷性:一个算法必须保证在执行有限步骤之后结束,而不是无限的。

(2)确定性:算法中每一条指令必须有明确的含义,而不能是模棱两可的。

(3)可行性:每一个操作步骤都必须在有限的时间内完成。

(4)输入:一个算法可以有一个或多个输入,也可以没有输入。

(5)输出:一个算法可以有一个或多个输出。

没有输出的算法是没有实际意义的。

6.算法的评价标准(1)正确性。

(2)易读性。

(3)高效性。

(4)可维护性。

7.算法分析的目的算法分析主要是指分析算法的效率。

算法效率的度量主要从两个方面:算法的运行时间和算法所需的存储空间。

分析的目的是通过考察算法的时间和空间效率,以求改进算法或对不同的算法进行比较。

一般情况下,鉴于运算空间(内存)较为充足,所以把算法的时间复杂度分析作为重点。

8.算法的时间复杂度分析(1)算法运算时间的度量的两种方法:事后统计的方法和事前分析估算的方法。

(2)算法运行时间的分析规则通常把一个程序的运行时间定义为一个T(n),其中n是该程序输入数据的规模,而不是某一个具体的输入。

T(n)的单位是不确定的,一般把它看成在一个特定计算机上执行的指令条数。

通常记作:T(n)=O(f(n)),其中f(n)表示数据输入规模。

常见的算法时间复杂度的形式按性能降序的排列如下:O(1)<O(n2log)<O(n)<O(n*n2log)<O(2n)<O(3n)<O(n2)9.算法空间复杂度的含义空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。

算法在计算机存储器内占用的存储空间主要分为三部分:算法源代码本身占用的存储空间;算法输入输出数据所占用的存储空间;算法运行过程中临时占用的存储空间。

考虑一个算法的空间复杂度时,要综合分析这三个方面的因素。

通常记作:S(n)=O(f(n)),其中n为问题的规模(或大小)。

第2、3章线性表、栈、队列1.线性表的定义线性表是n个数据元素的有限序列,其中n(n≥0)为线性表的长度。

线性表中各个元素的类型相同。

对于线性表(a1,a2,…,ai,…,an)而言,数据元素a1没有直接前趋,an没有直接后继,表中的其它元素ai(2≤i≤n-1)有且仅一个直接前趋ai-1和直接后继ai+1。

2.顺序表顺序表是指线性表的顺序存储结构,即用一组连续的存储单元依次存放线性表的数据元素。

在C语言中可用一维数组来表示。

在顺序表中,以数据元素在计算机内“物理位置相邻”来表示表中数据元素间的逻辑关系。

顺序表是一种随机存储结构,只要确定了存储顺序表的起始位置,则表中任一元素都可以随机存取。

所以在顺序表中可以方便的进行数据元素的查找及存取。

但是在进行插入和删除操作时,将会引起元素的大量移动,因而效率比较低,并且易产生空间浪费或“上溢”现象。

顺序表的操作还应注意元素的存储位置,即数组下标(C语言中下标从0开始)。

3.链表链表是线性表的链式存储结构。

链表是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放线性表的数据元素。

在链表中,通过指针来表示元素之间的逻辑关系的,不再有逻辑顺序与物理存储顺序一致的特点,是非顺序存储结构。

在单链表中,每个结点由数据域和指针域组成。

数据域保存数据元素的信息,指针域存放其直接后继的存储位置。

其类型可描述为:typedef struct Node{elemtype data;struct Node*next;}LinkList;单链表由头指针唯一确定。

为了便于操作,可在链表的第一个结点之前添加一个表头结点。

在链表中进行插入和删除操作只需要修改有关的指针内容,不需要移动元素。

因此,链表较顺序表的插入和删除操作更加方便、高效。

为了便于实现各种运算,若无特殊说明,均采用带头结点的链表。

4.栈栈(Stack)是限定仅在表的一端进行插入或删除操作的线性表。

通常把允许插入和删除操作的一端称为栈顶(Top),而另一端称为栈底(Bottom)。

表为空时称为空栈。

在栈上的主要运算是入栈和出栈。

栈中元素如果按a1,a2,…,an的顺序进栈,则出栈顺序为an,an-1,…,a1。

因此,栈又称为“后进先出”(Last In First Out)的线性表,简称LIFO表。

同线性表相似,栈也有顺序栈和链栈两种存储结构。

顺序栈易产生“上溢”现象,而链栈不容易产生。

另外,注意对栈的操作只能在栈顶进行。

5.队列队列(Queue)是限定只能在表的一端进行插入,在表的另一端进行删除的线性表。

通常把允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。

队列中元素如果按a1,a2,…,an的顺序进队,则出队的顺序仍为a1,a2,…,an。

因此,队列又称为“先进先出”(First In First Out)的线性表,简称FIFO表。

队列也有顺序队列和链队列两种存储结构。

在顺序队列中,为避免“假满”现象,一般采用循环队列(即首尾相接)。

链队列会因为队满而产生“上溢”现象。

第4章串1.概念和术语串(String)(或字符串):是由零个或多个字符组成的有限序列。

一般记为s=“a1a2…a n”(n≥0)其中,s是串的名,用双引号括起来的字符序列是串的值。

串的长度:串中字符的个数n。

子串和主串:串中任意个连续的字符组成的子序列称为该串的子串。

包含子串的串相应地称为主串。

空串:不包含任何字符的串,表示为“Ф”。

空格串:由一个或多个空格字符组成的串。

例如:“”。

2.串的基本操作(1)用串变量赋值assign(s,t)和用串常量赋值create(s,ss)(2)判等函数equal(s,t)(3)求长函数length(s)(4)连接函数concat(s,t)(5)求子串函数substring(s,pos,len)(6)定位函数index(s,t)(7)置换函数replace(s,t,v)(8)插入子串insert(s,pos,t)(9)删除子串delete(s,pos,k)(10)串的复制copy(s,t)3.串的顺序存储结构(顺序串)串的顺序存储方式类似于线性表的顺序存储方式,其存储结构用C语言描述为:typedef struct strnode{char data[maxlen];int len;}SeqString;//定义顺序串类型第5章数组和广义表1.多维数组的顺序存储结构对于多维数组,有两种存储方式:一是以行为主序(或先行后列)的顺序存放,如BASIC、PASCAL、C等程序设计语言中用的是以行为主的顺序分配,即一行分配完了接着分配下一行。

另一种是以列为主序(先列后行)的顺序存放,如FORTRAN语言中,用的是以列为主序的分配顺序,即一列一列地分配。

以行为主序的分配规律是:最右边的下标先变化,即最右下标从小到大,循环一遍后,右边第二个下标再变,…,从右向左,最后是左下标。

以列为主序分配的规律是:最左边的下标先变化,即最左下标从小到大,循环一遍后,左边第二个下标再变,…,从左向右,最后是右下标。

不论按何种方式存储,只要确定了数组的首地址以及每个数组元素所占用的单元数,就可以将数组元素的存储地址表示为其下标的线性函数。

设有m×n二维数组Amn,以“以行为主序”可以共享一个存储空间,其余的元素有按结点形式的不同,广义表的链式存储结构可分为两种不同的存储方式。

一种称为头尾表示法,另一种称为孩子兄弟表示法。

11.广义表的基本运算广义表有两个重要的基本操作,即取头操作(Head)和取尾操作(Tail)。

此外,在广义表上可以定义与线性表类似的一些操作,如建立、插入、删除、拆开、连接、复制、遍历等。

第6章树从对线性结构的研究过渡到对树形结构的研究,是数据结构课程学习的一次跃变。

1.理解树的递归定义树(Tree)是零个或多个结点的有限集合。

结点数为0的树称为空树,结点数大于0的树称为非空树。

在一棵非空树中:(1)有且仅有一个特定的称为根(root)的结点;(2)当结点数大于1时,除根结点外,其它结点被分成n(n>0)个互不相交的子集:T1,T2,…,Tn,其中每个子集本身又是一棵树(称之为子树),每一棵子树的根xi(1≤i≤n)都是根结点root的后继,树T1,T2,…,Tn称为根的子树。

相关文档
最新文档