数据结构重点整理_第1页
数据结构重点整理_第2页
数据结构重点整理_第3页
数据结构重点整理_第4页
数据结构重点整理_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、考点1 算法的时间复杂度 (不会出简单的for循环)例题.1下面程序段的时间复杂度为 D O(n*log2n) 。for (k=1;k<=j;k+) int i=1;       while (i<=n)  i=i*2; O(1)初始化线性表 检查线性表是否为空O(n)删除线性表中的所有元素;得到线性表的长度;得到线性表中指定序号为pos的元素;遍历一个线性表;从线性表中查找具有给定值的第一个元素;更新线性表中具有给定值的第一个元素;向线性表中按给定条件插入一个元素;从线性表中删除符合给定条件的第一个元素 O(n

2、2)对线性表进行排序2几种数据结构 (数据结构定义:具有结构的数据元素的集合 )逻辑结构:集合、线性结构(线性表、广义表、堆栈和队列)非线性结构(树、图)存储结构:顺序存储结构、链式存储结构、索引结构、散列结构等集合和线性结构:1 :1 树形结构:1 :N 图形结构:N : N 3 线性表顺序存储和链接存储的特点顺序存储:随机存取,预先定义表长;插入删除时有大量元素的移动(当下标为1开始的实话移动n-i+1,当下标为0开始的实话移动n-i),查找方便。链式存储:非随机存取,表长不需要预先定义是动态分配,插入删除不需要大量的元素移动,查找时从第一个元素开始查找。4 根据线性表的常用操作,选择最合

3、适的存储方式顺序表和链表的比较:空间方面:a当表长难估较大时,选择链式存储b当表长较小时,选择顺序存储时间方面:a插入与删除较多时选择链式存储b查找方面较多时用顺序存储语言方面:当语言没有指针,选用链式存储时选用静态链表(静态链表需要预先设定空间)某线性链表最常用的操作是在最后一个结点之后插入一个结点或删除第一个结点, 用仅有尾指针的单循环链表存储方式实现这两种操作6 链表的特点例题:链表不具有的特点是(A)。 A、可随机访问任意元素 B、插入删除不需要移动元素C、不必事先估计存储空间 D、所需空间与线性表长度成正比7 链表的插入删除8 链表各操作的时间复杂度O(1)初始化链表 检查链表是否为

4、空O(n)删除链表中的所有元素;得到链表的长度;得到链表中指定序号为pos的元素;遍历一个链表;从链表中查找具有给定值的第一个元素;更新线性表中具有给定值的第一个元素;向链表中按给定条件插入一个元素;从链表中删除符合给定条件的第一个元素 O(n2)对链表进行排序例题:在一个长度为n单链表;在表头插入元素的时间复杂度为 O(1) ;在表尾插入元素的时间复杂度为O(n)。9 栈的特点:先进后出,后进先出。10 栈的顺序存储、链式存储的出栈入栈时间复杂度:O(1)13 根据给定递归算法和输入 求输出(读递归程序)14 数组上的循环队列 的进队出队操作 (参考期中考试最后大题)判空:rear = fr

5、ont 满:(rear+1)%MaxSize = front进队操作:rear = (rear+1)%MaxSize; Q(rear)=x出队操作:front = (front+1)%MaxSize; X=Q(front)入队时需先修改入队指针(队尾指针)rear = = (rear +1)% QueueMaxSize 出队时需要修改队头指针front = (front +1)% QueueMaxSize 15 链队的插入O(1)void EnQueue (LinkQueue& HQ,const ElemType& item) LNode* newptr=new LNode;i

6、f (newptr =NULL) cerr<<“Memory alocation failure."<<endl;exit(1); newptr->data=item;newptr->next =NULL;if (HQ.rear=NULL) HQ.front=HQ.rear=newptr;else HQ.rear=HQ.rear->next=newptr; 17 稀疏矩阵的定义:其非零元素的个数远远小于零元素的个数。稀疏矩阵的严格定义: 稀疏因子d=非零元素/所有元素个数通常认为 d £ 0.3 的矩阵为稀疏矩阵三元组表示形式: (

7、 i, j, value ) i为第i行, j为第j列,value为非0元素的值18 广义表的特点规定:大写字母表示广义表名称,小写字母表示原子,广义表非空时:a是广义表的表头head。其余元素组成表尾tail;广义表中的数据元素有相对次序;广义表的长度定义为所含元素的个数;广义表的深度定义为括号嵌套的最大次数;注意:“空表”的深度为 1 ; 广义表可以共享;广义表可以是一个递归的表;递归表的深度是无穷值,长度是有限值。例:D=(E, F) E=(a, (b, c), D) , F=(d, (e) D的长度为2,深度为无穷19 求广义表的长度 深度广义表的深度=Max 子表的深度 +1;空表的

8、深度 = 1;仅由单元素组成的表的深度 = 1 例LS=(),(e),(a,(b,c,d)长度为3深度为3; LD=(a),(),b),(c)长度1深度420 树的性质1 树中结点个数等于所有结点的度数加121 二叉树的性质4 P185书中性质4:若对具有n个结点的完全二叉树按照层次从上到下,每层从 左到右的顺序进行编号, 则编号为i 的结点具有以下性质: (1) 若编号为i的结点有左孩子,则左孩子结点的编号为2i;若编号为i的结点有右孩子,则右孩子结点的编号为2i+1. (2) 除树根结点外,若一个结点的标号为i,则它的双亲结点的编号为i/2,也就是说,当i为偶数时,其双亲结点的编号为i/2

9、,它是双亲结点的左孩子,当i为奇数时,其双亲结点的编号为(i-1)/2,它是双亲结点的右孩子.(3) 若i|_n/2_|,即2i n,则编号为i的结点为分支结点,否则为叶子结点. (4) 若n为奇数,则每个分支结点都既有左孩子,又有右孩子;若n为偶数,则编号最大的分支结点(编号为n/2)只有左孩子,没有右孩子,其余分支结点左、右孩子都有. 22 给定权值 构造哈夫曼树 求带权路径长度(参考作业题)例题1:如右图:WPL=7*1+5*2+2*3+4*3=3523 哈夫曼树的特点又称最优树,是一种带权路径长度WPL最 小的二叉树。由0和1组成,用哈夫曼编码传送的电文长度;传输速率最快。叶子结点的度

10、为零;除叶子结点外的所有结点的度都为224 二叉排序树求平均查找长度:K为层数,n表示最大层数,m(k)表示第k层有m结点个数, M表示所有结点个数。 /(M)25 有向图边数和顶点入度 出度关系在有向图的邻接表中,从一顶点出发的弧链接在同一链表中,邻接表中结点的个数恰为图中弧的数目,所以顶点入度之和为弧数和的一倍;在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的1倍;无向图的邻接表中结点个数的边数的2倍。向图边数=所有度之和/226 无向图 顶点数和最小生成树的边数关系无向图 顶点数n:最小生成树的边数n-127 图的邻接表P258 邻接表:是图的一种链式存储结构。在邻接表中,对图

11、中每个顶点建一个单链表,第i个单链表中的结点表示依附于顶点vi的边(对于有向图是以顶点vi为尾的弧)。图的邻接表是存放什么的: 无权无向图:列存放所有节点,横向为结点对应邻接结点和指针指向结点对应的下一邻接点带权有向图:列存放所有节点,横向为结点的出度的所有邻接点,其中第一项为结点名称,第二项为与该结点名称对应的权值,第三项为指针指向结点对应的下一出度邻接点。28 求最短路径长度P281两个顶点间可能存在多条路径,其中有一条是长度最短的路径,即最短路径若带权值要i到j中所经过边权值之和最小的路径称为最短路径,其权值称为最短路径长度。29 图的边数与顶点数的关系(以下是网上找的小题)a).在一个

12、图中,所有顶点的度数之和等于所有边数的1倍。b).在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的1倍。c).一个有n个顶点的无向图最多有n(n-1)/2条边。d).具有4个顶点的无向完全图有6条边。e).具有6个顶点的无向图至少应有5条边才能确保是一个连通图。h).在一个具有n个顶点的无向图中,要连通全部顶点至少需要n-1条边。i).对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小n2g).对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表头向量的大小为 n ,所有邻接表中的结点总数是2e 。 k).一个图中的一条路径长度为k,则该路径所含的顶点数为k-1

13、30 求最小生成树:带权连通图中,总的权值之和最小的带权生成树 1) 布里姆算法依次在G中选择一条一个顶点仅在V中,另一个顶点在U中,并且权值最小的边加入集合TE,同时将该边仅在V 中的那个顶点加入集合U. 重复上述过程n-1次,使得U=V,此时T为G的最小生成树.2) 克鲁斯卡尔算法将图中的边按权值从小到大的顺序依次选取,若选取的边使生成树形成回路,则将其舍弃,如此进行下去,直到TE中包含有n-1条边为止,此时T为G的最小生成树.31 顺序查找的平均查找长度:(1+2+3n)/N32 构造二叉排序树 求平均查找长度平均查找长度为:(1*1+2*2+3*4+4*1)/8=21/833二分查找

14、给定有序表和待查元素 求依次与哪些元素进行比较将数据元素2,4,6,8,10,12,14,16,18,20依次存放于一维数组A0.9中,然后采用二分查找方法查找元素12,被比较过的数组元素的下标依次为 4,7,5 _。34冒泡排序 每趟需要进行的比较次数,最多进行多少趟 n-1趟35 快速排序 第一次划分结果快速排序(Quick Sorting),又称划分排序.是目前所有排序方法中速度最快的一种(从排序区间选取一个元素为基准,从区间两端向中间顺序进行比较和交换,使得前面单元只保留比基准小的元素,后面单元保留比基准大的元素.然后把基准放到前后两部分之间.)36 各排序算法空间复杂度排序方法时间复

15、杂度空间复杂度稳定性复杂性平均情况最坏情况最好情况直接插入O(n2)O(n2)O(n)O(1)稳定简单希尔排序O(n*n1/2) O(n2)O(nlog2n)O(1)不稳定较复杂冒泡排序O(n2)O(n2)O(n)O(1)稳定简单快速排序O(nlog2n)O(n2)O(nlog2n)O(log2n)不稳定较复杂直接选择O(n2)O(n2)O(n2)O(1)不稳定简单堆排序O(nlog2n)O(nlog2n)O(nlog2n)O(1)不稳定较复杂归并排序O(nlog2n)O(nlog2n)O(nlog2n)O(n)稳定较复杂基数排序O(d(n+rd)O(d(n+rd)O(d(n+rd)O(rd)

16、稳定较复杂37 二叉排序树的特点二叉排序树的中序是有序的;左孩子比根小,右孩子大于等于根38 顺序查找适合的存储结构顺序查找方法既适用于线性表的顺序存储结构,也适用于线性表的链式存储结构(使用单链表作存储结构时,扫描必须从第一个结点开始)。39排序算法时间复杂度 (见36知识点图)40 双循环链表 (老师忘记出什么样的了)41 图连通需要的边数在n个顶点的无向图中,若边数>=n-1,则该图必是连通图。42 排序的稳定性(见36知识点图)稳定的有:直接插入 、归并排序、基数排序、冒泡排序 不稳定的有:快速排序、希尔排序、直接选择、堆排序 43 树的性质3课件:性质3 深度为h的k叉树中至多

17、有(kh-1)/(k-1) 结点。 满k叉树:结点个数等于(kh-1)/(k-1) 的k叉树。44 二叉树的定义:二叉树为度为2的有序树。递归定义:或者是一棵空树,或者是一棵由根结点和两棵互不相交的左、右子树组成的非空树。左、右子树同样也是二叉树。45 二分查找 最多需要比较次数:N个元素最多比较n/2次46树的深度的定义:树中所有结点层次的最大值,也称高度。每次调整至少能排除一半的个数(从x到其x-1层,x层得个数应该是所有个数的一半+1),所以复杂度是log级别 比如有32个元素(为了方便取一个2的幂), 第一次排除 ,16,第二次,8,第三次4,. 2,1. 以这种规律排除几次才能完呢?

18、比如要排除a次,那么 第一次 2(a-1) ,第二次2(a-2). 第三次2(a-3) .第a次20=1是不是 总的个数-1= 1+2+4+.2(a-1) =2a-1那么总的个数=2a 所以: a=log2 (总的个数)对于一棵具有n个结点的二叉树,用二叉链表存储时,其指针总数为_ 2n _个,其中_ n-1_个用于指向孩子,_ n+1_个指针是空闲的。若对一棵完全二叉树从0开始进行结点的编号,并按此编号把它顺序存储到一维数组A中,即编号为0的结点存储到A0中。其余类推,则A i 元素的左孩子元素为_2i+1_,右孩子元素为_ 2i+2 _,双亲元素为_(i-1)/2_。6. 设一组初始记录关

19、键字序列为(15,17,18,22,35,51,60),要求计算出成功查找时的平均查找长度。答: ASL=(1*1+2*2+3*4)/7=17/72.从一个长度为n的顺序表中删除第i个元素(0in-1)时,需向前移动n-i+1个元素。 n-i-1 (×)1在一个长度为n的顺序表中删除第i个元素时,需向前移动 ni1个元素。插入i位置,移动 ni个元素。8在一棵二叉树中,度为零的结点的个数为n0,度为2 的结点的个数为n2,则有n0n21。9一棵有n个叶子结点的哈夫曼树共有_2n1_个结点。3、顺序查找查找成功时的最坏比较次数为(n-1)和查找失败时的比较次数为(n)。4、设有64个元素,用折半查找方法进行查找时,最大比较次数是(7),最小

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论