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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

全国计算机等级考试二级公共基础知识总结.docx

1、全国计算机等级考试二级公共基础知识总结全国计算机等级考试二级公共基础知识总结 第一章数据结构与算法 1.1 算法1算法的基本特征:可行性;确定性,有穷性;拥有足够的情报。,2确定性:算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;3算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。4归纳法:通过观察一些简单而特殊的情况,最后总结出一般性的结论的算法的设计方法。5算法时间复杂度是指执行算法所需要的计算工作量。可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。6算法时间复杂度取决于问题的规模和待处理的数据的初态。7如果算法P调用另一个算法Q,

2、而算法Q又调用算法P,则称为间接递归调用8工程上常用的分治法是减半递推技术9算法空间复杂度是指执行这个算法所需要的内存空间。10如果查找的x一定在数组中,此时q=1,则A(n)=(n+1)/2。也就是说,在这种情况下,用顺序搜索法在长度为n的一维数组中查找值为x的元素,在平均的情况下需要检查数组中一半的元素。如果已知需要查找的x有一半机会在数组中,此时q=1/2。则A(n)=(n+1)/4+n/2=3n/4。x不在数组中时,A(n)=n。. 11下面程序段的时间复杂度是 for(int i=0;in;i+)for(int j=1;jtop= -1是判断顺序栈为空的条件。ST-top=MaxSi

3、ze-1是判断顺序栈为满的条件。4栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。栈的基本运算有:入栈,出栈(删除栈顶元素),初始化、置空、判断栈是否为空或满、提取栈顶元素等,对栈的操作都是在栈顶进行的。5通常元素出栈的顺序是先取出栈顶元素再移动栈顶指针,使之指向新的栈顶元素。6从一个循环队列中删除一个元素,通常是先取出元素再移动栈顶指针7队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,front指针指向队头。8在一个容量为25的循环队列中,若头指针front=6

4、,尾指针rear=9,则该循环队列中共有3个元素9队列是“先进行出”(FIFO)或“后进后出”(LILO)的线性表。10队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。循环队列:s=0表示队列空,s=1且front=rear表示队列满11当循环队列为空(S=0)时,不能进行退队运算,这种情况称为下溢12栈的基本操作。一个栈的入栈序列是1,2,3,.,n,其输出序列为P1,P2,P3,。,Pn,若P1=n,则Pi为n-i+1当p1=n,即n是最先出栈的,根据栈的运算原理,n必定是最后入栈的,那么输入顺序必定是1,2,3,.,n,则出栈的序列是n,n-1,n-2

5、,.,113设初始输入序列为1,2,3,4,5,利用一个栈产生输出序列,下列B序列是不可能通过栈产生的由于栈的压入和退出只能在栈顶进行,所以要使出栈的第一个数是序列的最后一个数5,只能先把序列所有元素都压入栈,但这时出栈序列只能是(A 5,4,3,2,1),所以(B 5,3,4,1,2)选项的出栈序列是错误的,应选(B)。当初始序列压入一个时,就退出一个元素,这样就得到(A)选项的出栈序列1,2,3,4,5;先压入1,2,3,4四个元素,再退出所有元素,最后压入5,并退栈这时得到(C)选项的出栈序列4,3,2,1,5;压入1,2后对后面的元素3,4,5分别压入一个退出一个,这时便得到(D)选项

6、的出栈序列3,4,5,2,1。15 线性链表1数据结构分为逻辑结构与存储结构,线性链表属于存储结构。2数据结构中的每一个结点对应于一个存储单元,这种存储单元(一个一个小块)称为存储结点,简称结点。3结点由两部分组成:(1)用于存储数据元素值,称为数据域;(2)用于存放指针,称为指针域,用于指向前一个或后一个结点。 4在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。因此,链式存储结构是散列存储5带头结点的双向循环链表L为空的条件是:只有该头结点,即L-next=L 或者 L-prior=L6对

7、于链式队列结构,插入元素是在队尾进行的,只需修改队尾指针,不需修改队头指针。向链式队列中插入一个结点就是在单链表表尾插入一个结点,同时新插入的结点成为表尾结点。例:在一个链式队列中,假设f和r分别为队头和队尾指针,则插入s所指结点的运算是r-next=s;r=s;7向链式栈中插入一个结点,就是在单链表的表头插入一个结点,同时将新结点的位置赋予栈顶指针。例:向一个栈顶指针为HS的链式栈中插入一个s所指的结点时,则执行s-next=HS;HS=s;8线性链表的基本操作:插入、删除、查找、排序。9双向链表每个结点有两个指针域,这两个指针分别指向它的前驱结点和后继结点。10单链表中,每个结点都含有一个

8、指针域,这个指针指向它的下一个结点。因此访问单链表中的结点时,必须沿着它的指针逐个进行。11由于双向链表比单链表结构复杂,所以在插入和删除元素时,要修改更多的指针域,相对比较复杂,单向链表和双向链表在空间存储上的不连续性决定了两者都不可以随机访问,在双向链表中由于每个结点包括两个指针域,其中一个指向该结点的前驱结点,另一个指向该结点的后继结点,因此它既可以直接访问前驱结点,又可以直接访问后继结点,而单链表每个结点只有一个指针域,指向它的后继结点,所以它只能直接访问它的下一个结点,而无法直接访问它的前一个结点。所以双向链表顺序访问相邻结点更加灵活。12链表的特点:顺序表可以随机访问任意一个结点,

9、而链表必须从第一个数据结点出发,逐一查找每个结点。链表结构是一些逻辑上相邻,而空间上并不一定相邻的数据元素的集合,相邻的结点之间通过指针相互联系,在插入和删除元素时,只需修改结点指针即可,不需要移动数据元素。当存储空间不足时,可以动态为其分配内存空间,所以不必事先估计存储空间的大小。所需空间与其长度成正比。13用带头结点的链表表示线性表时,空表和非空表的插入、删除是相同的。当往空链表插入元素时,只要把待插入元素的指针域指向头结点的指针域,把头结点的指针域指向新增元素即可,当往非空链表插入元素时只要找到插入的位置,执行同样的操作即可完成插入。当链表只有一个元素时,删除操作只要修改指针指向下一个元

10、素的指针所指的元素即可,跟一般的链表删除操作是一样的。带头结点的链表并不能加快对链表的遍历,带头结点的链表反而要增加一个用于存储头结点的空间,并不能节省存储空间,用带头结点的链表跟存取元素的速度无关。14忽略了最后结点或头结点的指针,在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。 16 树与二叉树1树是一种简单的非线性结构,所有元素之间具有明显的层次特性。栈和队列都是线性结构。在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。每一个结点可以有多个后件,称为该结点的子结点。没有后

11、件的结点称为叶子结点。在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。树的最大层次称为树的深度。二叉树的特点:(1)非空二叉树只有一个根结点;(2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。2树的结点不能为空,结点最少的树为只有一个结点的树;二叉树的结点数可以为0,结点最少的二叉树为空的二叉树。3设树T的度为4,其中度为1,2,3和4的结点的个数分别为4、2、1、1,则T中叶子结点的个数为8(根据树的性质:树的结点数等于所有结点的度与对应的结点个数乘积之和为1。因此树的结点数为1*4+2*2+3*1+4*1+1=16。叶子结点数目等于树结点

12、总数减去度不为0的结点数之和,即16-(4+2+1+1)=8。)4设二叉树根结点的层次为0,对含有100个结点的二叉树,可能的最大树深和最小树深分别是99和6(要使二叉树在规定结点下有最大树深,这时二叉树退化成一个线性链表,如果对应二叉树的根结点的层次为0,那么对应二叉树的树深为结点个数减1,即99;要使二叉树有最小树深,则此二叉树为满二叉树,当满二叉树的根结点的层次为1时,结点个数n和树深h之间的关系为:n=2h-1,所以当二叉树的根结点层次为0时,对应关系为n=2(h+1)-1。)二叉树的基本性质:(1)在二叉树的第k层上,最多有2k-1(k1)个结点;(2)深度为m的二叉树最多有2的m次

13、方-1个结点;(3)度为0的结点(即叶子结点)总是比度为2的结点多一个;例:深度为5的二叉树至多有2*2*2*2*2-1=31个结点。具有3个结点的二叉树有5种,8例:设深度为h的二叉树上只有度为0和度为2的结点,则此二叉树中所包含的结点数至少2h-1为结点最少的情况,除根结点层只有1个结点外,其余h-1层均有两个结点,结点总数=2(h-1)+1=2h-1。(4)具有n个结点的二叉树,其深度至少为log2n+1,其中log2n表示取log2n的整数部分;(5)具有n个结点的完全二叉树的深度为log2n+1;(6)设完全二叉树共有n个结点。如果从根结点开始,按层序(每一层从左到右)用自然数1,2

14、,.n给结点进行编号(k=1,2.n),有以下结论:若k=1,则该结点为根结点,它没有父结点;若k1,则该结点的父结点编号为INT(k/2);若2kn,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(也无右子结点);若2k+1n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。9对于深度等于其结点数的二叉树,每层只有一个结点,假设从上向下分别为a1,a2,.,an,则先序遍历序列为a1,a2,.,an。后序遍历序列为an,an-1,.a1。遍历序列正好相反。满二叉树是指除最后一层外,每一层上的所有结点有两个子结点,则k层上有2k-1个结点深度为m的满二叉树有2m-1

15、个结点。10由满二叉树的树深和结点的关系知,对于深度为h的满二叉树,m个树叶,n个结点,则n=2h-1即 n=20+21+22+.+2(h-1)=2h-1。完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。11例:设一棵叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为1312例:假定根结点的层次是0,含有15个结点的二叉树的最小树深是3(要使二叉树在规定结点数下的深度最小,这样的二叉树只能是完全二叉树。当根结点的层次为1时,二叉树的结点n和深度h之间的关系是n=2h-1,所以当二叉树的根结点的层次为0时,结点和树深的关系是n=2(h+

16、1)-1,所以h=3,n=15)13在在深度为5的完全二叉树中,度为2的结点数最多为1514树的度是指树内各结点的度的最大值,一棵树中除根结点之外,每个结点都有一个前驱结点,结点拥有子树的个数称为结点的度,所以结点的度数之和即为除根结点外所有结点的个数,即每个结点的度数之和等于结点总数减1,结点的度即是拥有子树的个数,而结点与子树之间是以边连接的,所以一棵树中每个结点的度数之和与边的条数相等,15由二叉树的性质知二叉树叶子的个数n(0)和度为2的结点个数n(2)的关系为n(0)=n(2)+1。二叉树的结点个数可以等于0,二叉树中有些不是叶子的结点只有一个子女,二叉树存储结构采用链式存储结构,对

17、于满二叉树与完全二叉树可以按层序进行顺序存储。16二叉树的遍历:前序遍历DLR先根结点,后遍历左子树,最后遍历右子树;abdgcefh EFHIGJK EDBAC DBEAFC中序遍历LDR先左子树,后访问根结点,最后遍历右子树;dgbaechf HFIEJKG DEBAC ABDECF后序遍历LRD先左子树,后遍历右子树,最后访问根结点 gdbehfca 右子树为G DACBE DEBFCA17在先序、中序、后序遍历序列中叶子结点总是从左向右的。相对次序是不发生改变的。是完全相同的。(任意两种方法遍历同一棵二叉树,可以确保唯一一棵二叉树,无论是用前序遍历、中序遍历、后序遍历二叉树,其区别都在

18、于访问根的先后次序不同,而叶子结点的顺序是一样的。)18例:对树的三大部分:树根、左子树、右子树,存在树根结点大于左子树各个结点,小于右子树各个结点,因此要得到各个结点值的递增序列,应按“左子树-根结点-右子树”的顺序进行访问,这就是中序遍历的遍历过程。 19例:设n,m为一棵二叉树上的两个结点,在中序遍历中,n在m后的条件是n在m的右子树上,如果n在m的右子树上,根据中序遍历算法,先访问根结点m,然后再访问右子树上的结点,所以n必然要在m后。如果n是m的祖先,则m可能在n的左子树上,也可能在n的右子树上,如果m在n的左子树上,根据中序遍历算法,先访问n的左子树,然后访问n结点,所以n必然要在

19、m后,对如果n是m的子孙,则n可能在m的左子树上,也可能在m的右子树上。中序遍历时,先访问左子树,再访问根结点。n在m前,则n必须在m的左子树中。 20在中序遍历序列中,根结点将左右子树分开,左边为左子树中的所有结点,右边为右子树中的所有结点。21现有按中序遍历二叉树的结果为abc,问有5种不同形态的二叉树可以得到这样的遍历结果22在一棵二叉树中,度为0的结点个数为m,度为2的结点个数为n,则二者之间的关系是m=n+123设一棵完全二叉树共有700个结点,则在该二叉树中有350个叶子结点17 查找技术顺序查找的使用情况:(1)线性表为无序表;(2)表采用链式存储结构。1顺序查找法适合于线性表,

20、不论采用顺序存储还是链式存储。散列存储于顺序查找无关,同样压缩存储、索引存储也与顺序查找无关2二分法查找也称折半查找,只适用于顺序存储结构的且数据元素按关键字有序的有序表,对于长度为n的有序线性表进行二分查找,最坏情况只需比较log2n次。3例:有一个有序表为1,3,9,12,32,41,45,62,75,77,82,95,100,当二分查找为82的结点时,4次比校后查找成功。(此有序表的长度为13,按比较次数log2n计算应该是4。或先找中间结点45,再找77,95,最后找到82,经过4次比较,)4例:对有18个元素的有序表用二分法查找,则查找A3的比较序列的下标为9、4、2、3第一次(1+

21、18)/2=9,第二次(1+8)/2=4,第三次(1+3)/2=2,第四次(3+3)/2=3。5例:设有一个已按元素的值排好序的线性表(长度大于2),对给定的值k,分别用顺序查找法和二分查找法查找一个与k相等的元素,比较的次数分别是s和b,在查找不成功的情况下,s和b的关系是sb 。 (对于顺序查找,查找不成功时和给定关键字比较的次数为n+1。二分查找查找不成功的关键字比较次数为log2n+1即最大比较次数。当n=2时,显然n+1log2n+1。)6例:在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为4(二分查找是用要查

22、找的关键码与线性表的中间元素比较,根据比较结果是结束查找,还是在左边或者右边子表按相同的方法继续查找。与11比较的关键码分别为15、8、10、12。比较的次数为4。)7例:在顺序表(8,12,16,20,26,27,31,34,43,49,51)中,用二分法查找关键值为21,需做的比较次数为4(首先与27比较,由于21比27小,根据二分法比较的方法,所以接着与27左边的16比较,由于21比16大,所以与16右边的20比较,最后一次与26比较。所以总共比较了4次。)8例:对一个长度为10的排好序的表用二分法查找,若查找不成功,至少需要比较的次数是3(分查找的值小于表中所有元素和大于表中所有元素两

23、种情况进行分析),9例:在长度为n的线性表中查找一个表中不存在的元素,需要的比较次数为n10例:设线性表(a1,a2,。,a500)元素的值由小到大排列,对一个给定的k值用二分法查找线性表,在查找不成功的情况下至多需比较9次(二分法查找在查找不成功的情况下至多需要比较log2n+1=9(n=500)。)11例:已知有序表为(12,18,24,35,47,50,62,83,90,115,134),当用二分法查找100时,需进行3次比较可确定成功(画出二叉树判定树,当查找100时,需要和50、90、110比较,由于110的左子树为空,查找结束,比较了3次。)12如果要求一个线性表既能较快的查找,又

24、能适应动态变化的要求,可以采用分块查找方法13顺序查找法查找长度为n的线性表时,每个元素的平均查找长度为(n+1)/2。18 排序技术排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。1交换类排序法:(1)冒泡排序法,需要比较的次数(在最坏情况下的时间复杂度)为n(n-1)/2;(2)快速排序法。2插入类排序法:(1)简单插入排序法,最坏情况需要n(n-1)/2次比较;(2)希尔排序法,最坏情况需要O(n1.5)次比较。3选择类排序法:(1)简单选择排序法, 最坏情况需要n(n-1)/2次比较;选择排序的思想为:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面;然后对剩下的子表

25、采用同样的方法,直到子表空为止。第一个元素需要比较n-1次,第二个元素需要比较n-2次,依次类推,倒数第二个元素只须比较1次即可,所以总的比较次数为:(n-1)+(n-2)+.+2+1=n(n-1)/2。4(2)堆排序法,最坏情况需要O(nlog2n)次比较。堆排序的空间复杂度为O(1);时间复杂度在最好情况为O(nlog2n),平均情况为O(nlog2n),最坏情况为O(nlog2n)5在插入选择排序中,若初始数据基本正序, 则选用插入排序;若初始数据基本反序,则选用选择排序。因为插入排序在初始数据基本正序时时间复杂度为O(n),而选择排序在初始数据基本反序时时间复杂度为O(n)6插入排序的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个

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

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