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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构知识点归纳.docx

1、数据结构知识点归纳一、数据结构的章节结构及重点构成数据结构学科的章节划分基本上为:概论,线性表,栈和队列,串,多维数组和广义表,树和二叉树,图,查找,内排,外排,文件,动态存储分配。对于绝大多数的学校而言,“外排,文件,动态存储分配”三章基本上是不考的,在大多数高校的计算机本科教学过程中,这三章也是基本上不作讲授的。数据结构的章节比重大致为:1. 概论: 概念,时间复杂度。2. 线性表:基础章节,必考内容之一。概念,算法设计题。3. 栈和队列:基本概念。4. 串 :基本概念。5. 多维数组及广义表 : 基本概念。6. 树和二叉树 :重点难点章节,各校必考章节。概念,问答,算法设计题。7. 图:

2、重点难点章节,各校必考章节。概念,问答,算法设计题。8. 查找 :重点难点章节,概念,问答。9. 排序 :重点难点章节,问答各种排序算法的排序过程二、各章节的主要内容:第一章 概述主要内容:本章主要起到总领作用,为读者进行数据结构的学习进行了一些先期铺垫。大家主要注意以下几点:(1)数据结构的基本概念。(数据;数据元素;数据项;数据结构;数据的逻辑结构:线性和非线性,具体分为集合、线性结构、树形结构和图状结构;数据的存储结构:顺序存储和链式存储;运算)(2)算法的度量:时间效率和空间效率,分别用时间复杂度和空间复杂度度量,掌握时间复杂度的度量方法量方法。(大O表示法)参考题目:填空题:1、数据

3、结构是相互之间存在一种或多种特定关系的数据元素的集合,它包括三方面的内容,分别是数据的逻辑结构、( )和( )。2、数据结构按逻辑结构可分为两大类,它们分别是( ) 和( ) 3. 数据的物理结构主要包括( )和( )两种情况。4线性表,栈,队列和二叉树四种数据结构中( )是非线性结构,( )是线性结构。5、线性结构中元素之间存在( )关系,树形结构中元素之间存在( )关系,图形结构中元素之间存在( )关系。6、程序段的时间复杂度是_。for(i=1;i=n;i+) k+; for(j=1;j=n;j+) x=x+k; 7下列算法的时间复杂度是_。 for(i=0;im;i+ +) for(j

4、=0;jn;j+ +) aij=i;8下列算法的时间复杂度是_。i=s=0;while(s next = NULL; Chead - next = head; Dhead ! = NULL;5、在一个单链表中,若P所指结点不是最后结点,在P之后插入S所指结点,则执行( ) AS-next=P-next;P-next=S BP-next=S-next;S-next=P; CP-next=P;P-next=S; DP-next=S;S-next=P;6、在已知头指针的单链表中,要在其尾部插入一新结点,其算法所需的时间复杂度为( ) A(1) B(log2n) CO(n) DO(n2)7、在一个单链

5、表中,已知q所指结点是p所指结点的直接前趋,若在p,q之间插入s结点,则执行的操作是( )。 As-next=p-next;p-next=s; Bq-next=s;s-next=p;Cp-next=s-next;s-next=p; Dp-next=s;s-next=q;8、设顺序线性表中有n个数据元素,则第i个位置上插入一个数据元素需要移动表中( )个数据元素,删除第i个元素(1in)时,需向前移动的元素的个数是( )。在顺序表中插入一个元素,需要平均移动( )元素,删除一个元素,需要平均移动( )元素,具体移动的元素个数与( )有关,插入删除操作的时间复杂度均为( )。9、设单链表的结点结构

6、为(data,next),next为指针域,已知指针px指向单链表中data为x的结点,指针py指向data为y的新结点 , 若将结点y插入结点x之后,则需要执行以下语句: ( )。10 设指针变量p指向单链表中结点A的前驱结点,若删除单链表中结点A,则执行操作( )三、算法设计:1.设计算法,计算顺序表中数据元素为x的元素个数。顺序表结构如下:typedef struct int data100; int length; sqlist;函数首部为: int count(sqlist L, int x) 2设计算法,在顺序线性表中,删除顺序表中第i个元素,顺序表结构同上题。函数首部为:int

7、del(sqlist *L,int i) 3设计算法,在顺序线性表中,删除值为x的元素。函数首部为:void delx(sqlist *L , int x) 4. 对给定的单链表L(元素各不相同),编写一个删除L中值为x的结点的算法。链式结构如下:typedef struct LinkList int data; struct LinkList *next; Node,*LinkList;int delx(LinkList *head ,int x) 5.编写算法求带头结点的单链表的表长,结构同上题。int count(LinkList *head)第三章 栈与队列主要内容:栈与队列,是很多学

8、习DS的同学遇到第一只拦路虎,很多人从这一章开始坐晕车,一直晕到现在。栈和队列一章注意以下几个方面:(1) 栈的定义及其相关数据结构的概念:合法的出栈序列、出栈序列个数、顺序栈,链栈(2) 队列的定义及其相关数据结构的概念,包括:循环队列。(3) 栈和队列的特点:栈-后进先出;队列先进先出。(4) 递归算法概念。栈与递归的关系,所有的递归算法都可以借助栈将递归转向于非递归算法。(5) 操作:顺序栈的进栈、出栈操作。 循环队列的队空、队满条件,出队、入队、求队列元素个数操作。参考题目:1. 循环队列是空队列的条件是( )AQ . rear = = Q . front B(Q . rear + 1

9、)%maxsize = = Q .front CQ . rear = = 0 DQ. front = = 02. 链栈与顺序栈相比,比较明显的优点是( ) A通常不会出现栈满的情况 B通常不会出现栈空的情况C插入操作更加方便 D删除操作更加方便3. 若一个栈的输入序列是1,2,3,n,输出序列的第一个元素是,则第个输出元素是( ) An - i Bn i + 1 Ci D不确定4. 对于一个栈,给定输入序列为1,2,3,则下列不可能为输出序列的是( ) A1,2,3 B3,2,1 C3,1,2 D2,1,35. 栈是限定在( )处进行插入或删除操作的线性表。A端点 B栈底 C栈顶 D中间6.

10、当循环队列q是满队列时,存放队列元素的数组data有n个元素,则data中存放( )个数据元素。An B. n-1 C. n-2 D.07. 循环队列用数组elem0,m-1存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是_ _。8栈的特点是 ,队列的特点是 。9. 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈,一个元素出栈后立即进入队列Q,若6个元素出队的顺序是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是_ _。10若用一个大小为6的一维数组来实现循环队列,当前rear和front的值分别是0和3,从队列中删除一

11、个元素,再加入两个元素后,当前队列中共 个元素,rear的值为_,front的值为_。第四章 串主要内容:最容易自学的章节之一本章注意:(1)串的基本概念:串(串是其元素均为字符型数据的特殊线性表),子串、空串与空格串的区别,串相等的条件、模式匹配。(2)串的定长顺序存储(3)串的基本操作功能,如求串长,串连接,串替换等,给出一个字符串能够写出操作的结果。参考题目:1串是一种特殊的线性表,其特殊性体现在( )。 2S1=“ABCD”,S2=“CD”则S2在S1中的位置是( ) 3假设S=“abcaabcaaabca”,T=“bca”,Index (S,T,3) 的结果是(6 ) 4设有S1=A

12、BCDEFG,S2=PQRST,函数con(x,y)返回x和y串的连接串,subs(S,i,j)返回串S的从序号i的字符开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(S1,2,len(S2),subs(S1,len(S2),2)的结果是_ _。 5在串中,SubString (“student”,5,2) 的结果是_ _。4假设S=“abcaabcaaabca”,T=“bca”,V=“x”,Replace (S,T,V)结果是_ _。7两个串相等的充分必要条件是_ _ 且_ _。 8. 子串的定位操作通常称为 。第五章 数组与广义表主要内容:(1)多维数组中某数组元

13、素的存储位置求解。一般是给出数组元素的首元素地址和每个元素占用的地址空间并组给出多维数组的维数,然后要求你求出该数组中的某个元素所在的位置。(2)明确按行存储和按列存储的区别和联系,并能够按照这两种不同的存储方式求解1中类型的题。(3)稀疏矩阵的压缩存储概念,三元组表和十字链表存储。(4)广义表的概念,理解广义表的递归特性,特别应该明确表头与表尾的定义。(5)广义表的存储特性-难以用顺序存储结构存储。能画出头尾表示法 (6)广义表的操作GetHead和GetTail,给出一个广义表能够写出取表头和取表尾操作的结果。参考题目:1. 常对数组进行的两种基本操作是( )。A. 建立与删除 B. 索引

14、和修改 C. 对数据元素的存取和修改 D. 查找与索引2. 二维数组A中,每个元素A的长度为3个字节,行下标i从0到7,列下标j从0到9,从首地址SA开始连续存放在存储器内,该数组按行存放时,数组元素A74的起始地址为( )。A. SA+141 B. SA+144 C. SA+222 D. SA+2253. 对稀疏矩阵进行压缩存储目的是_ _。4已知广义表:A=(a,b), B=(A,A), C=(a,(b,A),B),则 tail(head(tail(C) 运算的结果为_。5求下列广义表操作的结果:(1) GetTailGetHead(a,b),(c,d)=_(2) GetTailGetHe

15、adGetTail(a,b),(c,d) =_第六章 树与二叉树主要内容:从对线性结构的研究过度到对树形结构的研究,是数据结构课程学习的一次跃变,此次跃变完成的好坏,将直接关系到你到实际的考试中是否可以拿到高分,而这所有的一切,将最终影响你的专业课总分。所以,树这一章的重要性,已经不说自明了。总体来说,树一章的知识点包括:(1) 二叉树的概念、性质(性质非常重要)(2) 二叉树的存储结构(顺序存储和二叉链表存储)(3) 二叉树遍历的三种算法(给二叉树能写出遍历序列,根据遍历序列可以构造二叉树;遍历递归算法(二叉树的其他算法很多都是在遍历的基础上得到的)、在三种基本遍历算法的基础上实现二叉树的其

16、它算法(如求叶子结点、总结点、高度等,仔细揣摩求解思路) (4) 线索二叉树的概念。(利用二叉链表存储时的空链域指向前驱和后继,空链域个数;给出一棵二叉树能画出对应的线索二叉树,如P149图6.16)(5) 树、森林的概念,树与森林的遍历算法(给出树或森林,能写出其要求的遍历序列),树和森林的遍历算法与二叉树遍历算法的联系。(6) 树与森林和二叉树的相互转换。(7) 最优二叉树的概念,哈夫曼树的概念,特点(只有0和2的结点),能够按指定权值建立哈夫曼树,给出哈夫曼编码,计算WPL。树一章,处处是重点,道道是考题,大家务必个个过关。参考题目:1、在具有n个结点的完全二叉树中,结点i(i1)的父结

17、点是( ) A2i B不存在 C2i+1 D i/22、下列陈述中正确的( ) A二叉树是度为2的有序树 B二叉树中结点只有一个孩子时无左右之分 C二叉树中必有度为2的结点 D二叉树中最多只有两棵子树,并且有左右之分3、以二叉链表作为二叉树的存储结构,在具有个结点的二叉链表中(n0),空链域的个数为( ) A2n - 1 Bn - 1 Cn + 1 D2n + 14、将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为( ) A99 B98 C50 D485、在一棵具有五层的满二叉树中,结点总数为( ) A31 B32 C33

18、 D166深度为k的完全二叉树中最少有( )个结点。 A. 2k-1-1 B. 2k-1 C. 2k-1+1 D. 2k -17、三个结点可以构成( )种不同形状的二叉树。A 2 C3 D58、树中所有结点的度之和等于所有结点数加( )。A 0 B1 C-1 D29、含有10个结点的二叉树中,度为0的结点数为4,则度为2的结点数为( ),度为1的结点数为( )A3 B4 C5 D610、有m个叶结点的哈夫曼树所具有的结点数为( ) Am Bm+1 C2m D2m - 1填空:1若某二叉树有20个叶子节点,有30个节点仅有一个孩子,则该二叉树的总的节点数是 。2设二叉树中度数为0的结点数为50,

19、度数为1的结点数为30,则该二叉树中总共有_个结点。3.若前序遍历二叉树的结果为序列A、B、C,则有_棵不同的二叉树可以得到这一结果。4线索二叉树的左线索指向其 ,右线索指向其 。5、已知完全二叉树T的第5层只有7个结点,则该树共有 个叶子结点。 简答:1.已知一棵二叉树的先序遍历序列EFHIGJK,中序遍历序列为HFIEJGK,构造该二叉树,写出后序序列。2.已知一棵二叉树的前序序列为ABCDEFGH,中序序列为CBEDFAGH,请画出该二叉树,写出后序序列。3.已知一棵二叉树的后序序列“cdbgfea”, 中序序列“cbdaegf”, 请画出该二叉树,写出先序序列。4.根据后序序列“ced

20、bhjigfa”和中序序列“cbedahgijf”构建二叉树,并给出其先序序列。5.假设用于通信的电文字符集为A B C D E,各字母出现次数分别为2 9 5 7 6,现需求这些字母的最优编码,计算huffman树的带权路径长度。6.假设用于通信的电文由8个字母a,b,c,d,e,f,g组成,其频率分别为W=5,2,9,11,8,3,7,试构造相应的哈夫曼树,给出每个字母的haffman编码,并计算它的带权路径长度。三、算法设计:1.编写算法求二叉树中叶子结点的数目。数据结构定义为:typedef struct Node int data; struct Node *Lchild; stru

21、ct Node *Rchild;BiTNode,*BiTree;函数首部为:int leaf(BiTree *root)2. 利用二叉树遍历算法求二叉树的高度,假设根结点的高度为1.int Depth(BiTree *root)3.以二叉链表为存储结构写出求二叉树结点总数的算法。第六章 图主要内容:如果说,从线性结构向树形结构研究的转变,是数据结构学科对数据组织形式研究的一次升华,那么从树形结构的研究转到图形结构的研究,则进一步让我们看到了数据结构对于解决实际问题的重大推动作用。 图这一章的特点是:概念繁多,与离散数学中图的概念联系紧密,算法复杂,考研时极易被考到,且容易出大题,如果不考查树与

22、图两章的知识,几乎是不可想像的。主要知识点如下:(1)图的基本概念: 图的定义和特点,无向图,有向图,入度,出度,完全图,生成子图,路径长度,回路,(强)连通图,(强)连通分量、生成树等概念。与这些概念相联系的相关计算题也应该掌握(如:有向(无向)完全图边的条数、生成树的边的条数等)。(2)图的存储形式: 只看邻接矩阵 和(逆)邻接表(3)图的两种遍历算法:深度遍历和广度遍历,能够画出任意一幅图的深度优先搜索生成树和广度优先搜索生成树。(4)生成树、最小生成树的概念以及最小生成树的构造RIM算法和KRUSKAL算法。考查时,一般不要求写出算法源码,而是要求根据Prim算法、Kruskal算法构

23、造该图的最小生成树,画出其构造过程及最终生成的最小生成树。以下内容考研很重要(5)拓扑排序问题:拓扑排序有两种方法,一是无前趋的顶点优先算法,二是无后继的顶点优先算法。换句话说,一种是“从前向后”的排序,一种是“从后向前”排。当然,后一种排序出来的结果是“逆拓扑有序”的。要求按指定图,写出拓扑排序序列。(6)关键路径问题:这个问题是图一章的难点问题。理解关键路径的关键有三个方面:一是何谓关键路径,二是最早时间是什么意思、如何求,三是最晚时间是什么意思、如何求。关键路径问题是工程进度控制的重要方法,具有很强的实用性。要求对指定图,写出关键路径。(7)最短路径问题: 与关键路径问题并称为图一章的两

24、只拦路虎。概念理解是比较容易的,关键是算法的理解。最短路径问题分为两种:一是求从某一点出发到其余各点的最短路径;二是求图中每一对顶点之间的最短路径。这个问题也具有非常实用的背景特色,一个典型的应该就是旅游景点及旅游路线的选择问题。解决第一个问题用DIJSKTRA算法,解决第二个问题用FLOYD算法。注意区分。参考题目:1、在一个具有n个结点的无向图中,要连通全部结点至少需要( ) An条边 Bn+1条边 Cn-1条边 Dn/2条边2、最小生成树指的是( ) A由连通图所得到的边数最少的生成树 B由连通图所得到的顶点相对较少的生成树 C连通图的所有生成树中权值之和最小的生成树 D连通图的极小连通

25、子图3、在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的( ) A1/2倍 B1倍 C2倍 D4倍4、有n个结点的无向图的边数最多为( ) An+1 Bn(n-1)/2 Cn(n+1) D2n(n+1)5、若n个顶点的无向图采用邻接矩阵存储方法,该邻接矩阵是一个( ) A一般矩阵 B对称矩阵 C对角矩阵 D稀疏矩阵6.下列算法中,_算法用来求图中每对顶点之间的最短路径。A. Dijkstra B. Floyed C. Prim D. Kruskal7、最小生成树的构造可使用( A )。Aprim算法 B冒泡算法 C迪杰斯特拉算法 D哈夫曼算法8、有8个结点的有向完全图有( C )条边

26、。A14 B28 C56 D1129、已知有向图G=(V,E),其中V=V1,V2,V3,V4,V5,V6,V7,E=, , ,G的拓扑序列是( )。AV1,V3,V4,V6,V2,V5,V7 BV1,V3,V2,V6,V4,V5,V7CV1,V3,V4,V5,V2,V6,V7 DV1,V2,V5,V3,V4,V6,V710设无向图G中的边的集合E=(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c),则从顶点a出发进行深度优先遍历可以得到的一种顶点序列为_。11有N个顶点组成的无向连通图,最多可以有_条边。简答题:1.给出下图中从a出发的深度优先遍历序列和广度优

27、先遍历序列2. 求下图的最小生成树,要求分别用prim算法和kruskal算法,prim算法从定点1出发。画出最小生成树的生成过程。 16 21 11 5 19 6 33 14 6 43. 求下图的最小生成树,要求分别用prim算法和kruskal算法,prim算法从定点a出发。画出最小生成树的生成过程。4.已知图G如下所示,列出图G的邻接表,写出拓扑排序序列(写出一种即可),求出关键路径。5. 已知图G如下所示,列出图G的邻接表,写出拓扑排序序列(写出一种即可),求出关键路径。第七章 查找主要内容:在不少数据结构的教材中,是把查找与排序放入高级数据结构中的。应该说,查找和排序两章是前面我们所学的知识的综合运用,用到了树、也用到了链表等知识,对这些数据结构某一方面的运用就构成了查找和排序。现实生活中,

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

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