ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:291.69KB ,
资源ID:8569690      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8569690.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信息管理与信息系统专业数据结构期末考试复习资料.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

信息管理与信息系统专业数据结构期末考试复习资料.docx

1、信息管理与信息系统专业数据结构期末考试复习资料第一章1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号总称。2.数据类型:一个值的集合和定义在这个值集上的一组操作的总称数据元素之间的关系有4类基本结构(1)集合(2)线性结构(3)树形结构(4)网状结构或图状结构。抽象数据类型:指一个数学模型以及定义在该模型上的操作3.数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科4.数据的逻辑结构、存储结构数据的逻辑结构:只抽象反映数据元素的逻辑关系数据的存储(物理)结构:数据的逻辑结构在计算机存储器中的实现(顺

2、序存储结构、链式存储结构)5. 算法的特性6.算法设计的要求(1)正确性(correctness):算法应满足具体问题的需求 1、不含语法错误 2、对于几组输入数据能够得出满足规格说明要求的结果(2)可读性(readability):人的阅读与交流(3)健壮性(robustness):当输入非法数据时,算法能够适当的做出反应或进行处理,不会产生莫名其妙的结果(4)效率与低存储量:算法的执行时间和所需的最大存储空间7.时间复杂度随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度。简称时间复杂度。即基本操作(原操作)重复执行的次数的阶数 T(n)=o(f(n)

3、第二章1.线性表的基本概念与特点概念:一个线性表是n个数据元素的有限序列线性结构的特点:在数据元素的非空有限集中(1)存在唯一的一个被称作“第一个”的数据元素(2)存在唯一的一个被称作“最后一个”的数据元素(3)除第一个外,集合中的每个数据元素均只有一个前驱(4)除最后一个外,集合中的每个数据元素均只有一个后继2.顺序表的插入和删除的实现3.单链表 考单链表的插入:算法2.9结点中只含一个指针域的链表叫单链表,也叫线性链表4.判空条件带头结点的Hnext=Null不带头结点的H=Null5.双向循环链表在双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前驱6. 动态申请内存L.el

4、em = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType);第三章1.栈栈是限定仅在表尾进行插入或删除操作的线性表。表尾端称为栈顶,表头端称为栈底。栈又称先进后出(后进先出)的线性表。2.顺序栈栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。3.1节考算法:push,pop操作实现(书P47)3.简答:栈的入栈出栈序列4.栈的应用:P55页、考算法3.5(汉诺塔算法)5.队列队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。允许插入的一端叫做

5、队尾,允许删除的一端叫做对头。6.链队列(实质是单链表)用链表表示的队列成为链队列。在头删除,尾端插入。7.循环队列存储结构特点?入队、出队P65:考出队(即:删除)的算法 第四章1.串及相关概念串:是由零个或多个字符组成的有限序列。一般记作s=a1a2an (n0) 其中:s为串名,用双引号括起来的字符序列是串的值;ai(0in)可以是字母、数字或其它字符;双引号为串值的定界符,不是串的一部分;串中字符的数目n称为串的长度。零个字符的串称为空串(长度为0)。串中任意连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。通常称字符在序列中的序号为该字符在串中的位置。空串零个字符的串

6、,通常以两个相邻的双引号来表示空串(Null string),如:s=,它的长度为零;空格串仅由一个或多个空格组成的的串,如:s=;若串中含有空格,在计算串长时,空格应计入串的长度中,如:s=Im a student的长度为13。只有两个串的长度相等,并且各个对应位置的字串都相等时才相等。2.定长顺序存储实现:用一组地址连续的存储单元存储串值的字符序列。串联接和求子串?考:定长顺序存储连接时有哪几种情况?3.匹配模式:考: P79算法4.5-81简答next的模式匹配第五章1.数组数组可以看成是一种特殊的线性表,即线性表中数据元素本身也是一个线性表考(选择、填空):图5.1、5.22.数组的顺

7、序存储结构?3.稀疏矩阵非零元较零元少,且分布没有一定规律的矩阵叫做稀疏矩阵。4.三元组顺序表结构:(顺序存储结构)转置算法:将矩阵行、列维数互换将每个三元组中的i和j相互调换重排三元组次序,使mb中元素以N的行(M的列)为主序方法一:按M的列序转置即按mb中三元组次序依次在ma中找到相应的三元组进行转置。为找到M中每一列所有非零元素,需对其三元组表ma从第一行起扫描一遍。由于ma中以M行序为主序,所以由此得到的恰是mb中应有的顺序方法二:快速转置即按ma中三元组次序转置,转置结果放入b中恰当位置此法关键是要预先确定M中每一列第一个非零元在mb中位置,为确定这些位置,转置前应先求得M的每一列中

8、非零元个数5.行逻辑链接(问:怎么存的)特点:为了便于随机存取任意一行的非零元,则需知道每一行的第一个非零元在三元组表中的位置。可在稀疏矩阵的存储结构中增加一个指示“行”信息的辅助数组6.十字链表:存储特点;P104图5.67.广义表 (考:写出两个表画结构 存储结构:P109图5.9 5.11)广义表是线性表的推广。广义表是递归定义的线型结构,其中,为原子或为子表。 第一个元素为表头,其余元素组成的表 称作表尾,n是表的长度第六章1.树树(tree)是n(n0)个结点的有限集T,其中:有且仅有一个特定的结点,称为树的根(root)当n1时,其余结点可分为m(m0)个互不相交的有限集T1,T2

9、,Tm,其中每一个集合本身又是一棵树,称为根的子树(subtree)特点:树中至少有一个结点根树中各子树是互不相交的集合树的基本术语结点(node)表示树中的元素,包括数据项及若干指向其子树的分支结点的度(degree)结点拥有的子树数叶子(leaf)度为0的结点孩子(child)结点子树的根称为该结点的孩子双亲(parents)孩子结点的上层结点叫该结点的兄弟(sibling)同一双亲的孩子树的度一棵树中最大的结点度数结点的层次(level)从根结点算起,根为第一层,它的孩子为第二层深度(depth)树中结点的最大层次数森林(forest)m(m0)棵互不相交的树的集合2.二叉树二叉树是n(

10、n0)个结点的有限集,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成(特点:任一个结点的度不超过2:只能为0、1、2)3.满二叉树4.完全二叉树深度为k,有n个结点的二叉树当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称为5.性质性质1:证明:用归纳法证明之 i=1时,只有一个根结点, 是对的 假设对所有j(1j1,则其双亲是i/2 (2) 如果2in,则结点i无左孩子;如果2in,则其左孩子是2i (3) 如果2i+1n,则结点i无右孩子;如果2i+1n,则其右孩子是2i+16.顺序存储实现:按满二叉树的结点层次编号,依次存

11、放二叉树中的数据元素特点:(1)结点间关系蕴含在其存储位置中(2)浪费空间,适于存满二叉树和完全二叉树二叉树存储结构7.链式存储二叉链表?三叉链表?双亲链表?8.遍历二叉树与二叉树的转换先序遍历:先访问根结点,然后分别先序遍历左子树、右子树中序遍历:先中序遍历左子树,然后访问根结点,最后中序遍历右子树后序遍历:先后序遍历左、右子树,然后访问根结点按层次遍历:从上到下、从左到右访问各结点9.树和森林树的存储结构双亲表示法实现:定义结构数组存放树的结点,每个结点含两个域:数据域:存放结点本身信息双亲域:指示本结点的双亲结点在数组中位置特点:找双亲容易,找孩子难孩子表示法多重链表:每个结点有多个指针

12、域,分别指向其子树的根结点同构:结点的指针个数相等,为树的度D结点不同构:结点指针个数不等,为该结点的度d孩子兄弟表示法(二叉链表表示法)链表中结点的两个链域分别指向该结点的第一个孩子和下一个兄弟结点10.树与二叉树的转换将树转换成二叉树加线:在兄弟之间加一连线抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系旋转:以树的根结点为轴心,将整树顺时针转45将二叉树转换成树加线:若p结点是双亲结点的左孩子,则将p的右孩子,右孩子的右孩子,沿分支找到的所有右孩子,都与p的双亲用线连起来抹线:抹掉原二叉树中双亲与右孩子之间的连线调整:将结点按层次排列,形成树结构森林转换成二叉树将各棵树分别转

13、换成二叉树将每棵树的根结点用线相连以第一棵树根结点为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树型结构二叉树转换成森林抹线:将二叉树中根结点与其右孩子连线,及沿右分支搜索到的所有右孩子间连线全部抹掉,使之变成孤立的二叉树还原:将孤立的二叉树还原成树11.树和森林的遍历先序遍历森林(1)访问森林中第一棵树的根节点(2)先序遍历第一棵树中根节点的子树森林(3)先序遍历除去第一棵树之后剩余的树构成的森林中序遍历森林(1)中序遍历森林中第一棵树的根节点的子树森林(2)访问第一棵树的根节点(3)中序遍历除去第一棵树之后剩余的树构成的森林遍历树的方法一种是先根遍历树:先访问树的根结点,然后依次先根

14、遍历根的每棵子树;另一种是后根遍历,即:先依次后根遍历每棵子树,然后访问根结点12.哈夫曼树(Huffman)带权路径长度最短的树定义路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径长度:路径上的分支数树的路径长度:从树根到每一个结点的路径长度之和树的带权路径长度:树中所有带权结点的路径长度之和Huffman树设有n个权值w1,w2,wn,构造一棵有n个叶子结点的二叉树,每个叶子的权值为wi,则wpl最小的二叉树叫13赫夫曼算法(1)根据给定的n个权值w1,w2,wn,构造n棵只有根结点的二叉树,令其权值为wj(2)在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉

15、树,置新二叉树根结点权值为其左右子树根结点权值之和(3)在森林中删除这两棵树,同时将新得到的二叉树加入森林中(4)重复上述两步,直到只含一棵树为止,这棵树即哈夫曼树14.赫夫曼编码:P148例题第七章1.有向图、无向图、网、子图图(Graph)图G是由两个集合V(G)和E(G)组成的,记为G=(V,E)其中:V(G)是顶点的非空有限集 E(G)是边的有限集合,边是顶点的无序对或有序对有向图有向图G是由两个集合V(G)和E(G)组成的 其中:V(G)是顶点的非空有限集 E(G)是有向边(也称弧)的有限集合,弧是顶点的有序对,记为,v,w是顶点,v为弧尾,w为弧头无向图无向图G是由两个集合V(G)

16、和E(G)组成的 其中:V(G)是顶点的非空有限集 E(G)是边的有限集合,边是顶点的无序对,记为(v,w)或(w,v),并且(v,w)=(w,v)网带权的图叫子图如果图G(V,E)和图G(V,E),满足: VV EE 则称G为G的子图邻接点对于无向图G(V,E),如果边(v,v) E,则称v和v互为邻接点。即:v和v相邻接。无向图中,顶点的度为与每个顶点相连的边数有向图中,顶点的度分成入度与出度入度:以该顶点为头的弧的数目出度:以该顶点为尾的弧的数目路径路径是顶点的序列V=Vi0,Vi1,Vin,满足(Vij-1,Vij)E 或 E,(1jn)路径长度沿路径边的数目或沿路径各边权值之和简单路

17、径序列中顶点不重复出现的路径叫简单回路/简单环除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路叫连通图图中任意两个顶点都是连通的叫连通分量非连通图的每一个连通部分叫强连通图有向图中,如果对每一对(Vi,Vj)V, ViVj,从Vi到Vj 和从Vj到 Vi都存在路径,则称G是强连通分量有向图中的极大强连通子图叫生成树一个连通图的生成树是一个极小连通子图,它含有图中的全部顶点,但只有足以构成一棵树的n-1条边2.图的存储结构特点数组表示法(邻接矩阵)(有、无都可)(1)无向图的邻接矩阵对称,可压缩存储;有n个顶点的无向图需存储空间为n(n+1)/2(2)有向图邻接矩阵不一定对称;有n个顶点

18、的有向图需存储空间为n(3)无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行元素之和有向图中, 顶点Vi的出度是A中第i行元素之和 顶点Vi的入度是A中第i列元素之和(4)网络的邻接矩阵可定义为:邻接表(有、无都可)(1)无向图中顶点Vi的度为第i个单链表中的结点数(2)有向图中 顶点Vi的出度为第i个单链表中的结点个数 顶点Vi的入度为整个单链表中邻接点域值是i的结点个数(3)逆邻接表:有向图中对每个结点建立以Vi为头的弧的单链表十字链表(有向图)是有向图的另一种链式存储结构邻接多重表(无向图)是无向图的另一种链式存储结构3.图的遍历深度优先遍历(DFS)方法:从图的某一顶点V0出发,访

19、问此顶点;然后依次从V0的未被访问的邻接点出发,深度优先遍历图,直至图中所有和V0相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止广度优先遍历(BFS)方法:从图的某一顶点V0出发,访问此顶点后,依次访问V0的各个未曾访问过的邻接点;然后分别从这些邻接点出发,广度优先遍历图,直至图中所有已被访问的顶点的邻接点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止4.最小生成树对于n个顶点的联通网可以建立许多不同的生成树,每一棵生成树都可以是一个通信网,

20、选择一棵生成树,使总的耗费最少。普里姆(Prim)算法算法思想:设N=(V,E)是连通网,TE是N上最小生成树中边的集合 初始令U=u0,(u0V), TE= 在所有uU,vV-U的边(u,v)E中,找一条代价最小的边(u0,v0) 将(u0,v0)并入集合TE,同时v0并入U 重复上述操作直至U=V为止,则T=(V,TE)为N的最小生成树克鲁斯卡尔(Kruskal)算法算法思想:设连通网N=(V,E),令最小生成树 初始状态为只有n个顶点而无边的非连通图T=(V,),每个顶点自成一个连通分量 在E中选取代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中;否则,舍去此边

21、,选取下一条代价最小的边依此类推,直至T中所有顶点都在同一连通分量上为止第九章1.顺序查找特点?对查找概率不等的查找表,先对查找概率进行排序优点:算法简单,适用面广缺点:平均查找长度较大。查找过程:从表的一端开始逐个进行记录的关键字和给定值的比较2.折半查找特点?查找过程:每次将待查记录所在区间缩小一半适用条件:采用顺序存储结构的有序表3.哈希表哈希表的函数构造直接定址法构造:取关键字或关键字的某个线性函数作哈希地址,即H(key)=key 或 H(key)=akey+b除留余数法构造:取关键字被某个不大于哈希表表长m的数p除后所得余数作哈希地址,即H(key)=key MOD p,pm4.处

22、理冲突的方法开放定址法方法:当冲突发生时,形成一个探查序列;沿此序列逐个地址探查,直到找到一个空位置(开放的地址),将发生冲突的记录放到该地址中,即Hi=(H(key)+di)MOD m,i=1,2,k(km-1)其中:H(key)哈希函数 m哈希表表长 di增量序列分类线性探测再散列:di=1,2,3,m-1二次探测再散列:di=1,-1,2,-2,3,k(km/2)例 表长为11的哈希表中已填有关键字为17,60,29的记录, H(key)=key MOD 11,现有第4个记录,其关键字为38, 按三种处理冲突的方法,将它填入表中 (1) H(38)=38 MOD 11=5 冲突 H1=(

23、5+1) MOD 11=6 冲突 H2=(5+2) MOD 11=7 冲突 H3=(5+3) MOD 11=8 不冲突 (2) H(38)=38 MOD 11=5 冲突 H1=(5+1) MOD 11=6 冲突H2=(5-1) MOD 11=4 不冲突(3) H(38)=38 MOD 11=5 冲突 设伪随机数序列为9,则: H1=(5+9) MOD 11=3 不冲突链地址法方法:将所有关键字为同义词的记录存储在一个单链表中,并用一维数组存放头指针例 已知一组关键字(19,14,23,1,68,20,84,27,55,11,10,79) 哈希函数为:H(key)=key MOD 13, 用链地

24、址法处理冲突5.使用指定的哈希函数和处理冲突的方法构造哈希表第十章1.直接插入排序算法?排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直至整个序列有序时间复杂度若待排序记录按关键字从小到大排列(正序)关键字比较次数:记录移动次数:若待排序记录按关键字从大到小排列(逆序)关键字比较次数:记录移动次数:若待排序记录是随机的,取平均值关键字比较次数:记录移动次数: 空间复杂度:S(n)=O(1)2.折半插入排序算法?排序过程:用折半查找方法确定插入位置的排序叫算法评价时间复杂度:T(n)=O(n)空间复杂度:S(n)=O(1)3

25、.希尔排序算法?基本思想:分割成若干个较小的子文件,对各个子文件分别进行直接插入排序,当文件达到基本有序时,再对整个文件进行一次直接插入排序。 2 依据:若待排序文件基本有序,即文件中具有特性: ri.key Max rj .key 1ji的记录数较少,则文件中大多数记录都不需要进行插入。 基本有序时,直接插入排序效率可以提高,接近于O(n)。3排序过程:先取一个正整数d1n,把所有相隔d1的记录放一组,组内进行直接插入排序;然后取d2r2.key,则交换;然后比较第二个记录与第三个记录;依次类推,直至第n-1个记录和第n个记录比较为止第一趟冒泡排序,结果关键字最大的记录被安置在最后一个记录上

26、(2)对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n-1个记录位置(3)重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止时间复杂度最好情况(正序)比较次数:n-1移动次数:0最坏情况(逆序)比较次数:移动次数:T(n)=O(n)空间复杂度:S(n)=O(1)5.快速排序算法?基本思想:通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列有序排序过程:(1)对rst中记录进行一趟快速排序,附设两个指针i和j,设枢轴记录rp=rs,x=rp.key(2)初始时令i=s

27、,j=t(3)首先从j所指位置向前搜索第一个关键字小于x 的记录,并和rp交换(4)再从i所指位置起向后搜索,找到第一个关键字大于x的记录,和rp交换(5)重复上述两步,直至i=j为止(6)再分别对两个子序列进行快速排序,直到每个子序列只含有一个记录为止算法评价时间复杂度最好情况(每次总是选到中间值作枢轴)T(n)=O(nlog2n)最坏情况(每次总是选到最小或最大元素作枢轴)T(n)=O(n)空间复杂度:需栈空间以实现递归最坏情况:S(n)=O(n)一般情况:S(n)=O(log2n)6.简单选择排序算法?排序过程(1)首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换(2)再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换(3)重复上述操作,共进行n-1趟排序后,排序结束算法评价时间复杂度记录移动次数最好情况:0最坏情况:3(n-1)比较次数:T(n)=O(n)空间复杂度:S(n)=O(1)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1