计算机等级考试二级指导教程公共基础知识.doc_第1页
计算机等级考试二级指导教程公共基础知识.doc_第2页
计算机等级考试二级指导教程公共基础知识.doc_第3页
计算机等级考试二级指导教程公共基础知识.doc_第4页
计算机等级考试二级指导教程公共基础知识.doc_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

全国计算机等级考试指导教程(二级)公共基础知识编著 黄海军2013年9月目 录前言4二级考试中的公共基础知识的备考4历年公共基础知识考点统计与分析6第一章数据结构与算法71.1算法71.2数据结构的基本概念81.3线性表及其顺序存储结构101.4栈和队列111.5线性链表131.6树与二叉树151.7查找技术191.8排序技术20第二章 程序设计基础222.1程序设计设计方法和风格222.2结构化程序设计(面向过程的程序设计方法)232.3面向对象的程序设计24第三章 软件工程基础273.1 软件工程基本概念273.2 结构化分析方法313.3 结构化设计方法323.4 软件测试363.5 程序的调试39第四章 数据库设计基础414.1 数据库系统的基本概念414.2 数据模型454.3关系代数474.4 数据库设计与管理50计算机等级考试二级指导教程公共基础知识前言二级考试中的公共基础知识的备考从2005年初开始,教育部对全国计算机等级考试进行了较大调整。二级考试的笔试包括基础知识和程序设计两部分,其中基础知识占30分。这次改革的思想就是将基础知识的内容由计算机常识(一级难度)调整为程序开发基础(三级难度),如果这部分知识内容没有掌握好,难以在等级考试中取得好成绩。因此,必须引起我们足够的重视,这部分因涉及四门课程知识,要求面广。实际上只要掌握了一定的备考技巧过关也不难的。大纲的二级基础知识分为数据结构与算法、程序设计基础、软件工基础、数据库设计基础四部分,下面分别说一下学习重点和方法:(1) 数据结构与算法本章的知识用于提高程序的效率以及对较复杂的问题进行求解。本章内容在计算机专业基础课中也属于比较难的一门,学习本章的内容必须进行理解,死记硬背是无效的。对于等级考试,本章重点的考核点主要在二叉树,同时这也是本章的难点,考核形式主要为二叉树的遍历问题(如给图求遍历序列、给前序、中序遍历求后序遍历等)、二叉树的结点问题(如给出一些条件然后求叶子结点个数);还有排序和查找考试中也经常会涉及到,排序主要以计算时间复杂度的形式考核,查找主要以计算最佳/最坏比较次数的方式考核。其余的知识点主要以概念的形式考察,考生需要仔细看书并理解。(2) 程序设计基础与软件工程基础这两章以概述的形式简介了规范化开发软件的方法。与数据结构不同,这两章内容主要是记忆性的知识点。程序设计基础的内容与大纲改革前添加了面向对象程序设计的内容,考生可以对本章进行几次细读后了解即可;软件工程基础这章主要考核内容为结构化分析及结构化设计方法(即SA及SD,约占50%),信息量较大,其次是软件测试(约占20%),考生需要将相关的概念及规则背诵,在以后有机会进行程序开发时这些知识可以得到深刻理解。(3) 数据库设计基础数据库是当前软件处理的信息核心,目前大部分软件都是基于数据库的,因此学习一下数据库知识对程序开发也是很有帮助的。本章主要的考核点是关系模型、关系代数及数据库系统的基本概念,其余的知识点了解即可,其中数据库的设计和管理可以结合着软件工程来看,考生会发现这两者有很多相似之处。除了关系代数会考一些简单的计算问题外,其余的都是以概念题的形式考核,考生需要仔细的阅读。以上为复习二级公共基础的方法,顺便提及一点考生在选购教材的时候应当特别注意,应当购买最近版的二级公共基础知识教程(指定教材由高等教育出版社出版),还有考生在备考时,除了应完成教材中的习题外还应当做一下近几年的真题,并且用其估计一下自己的知识欠缺以便更好的进行查漏补缺。 历年公共基础知识考点统计与分析章节知识点2012下2012上2011下2011上2010下2010上2009下2009上2008下2008上2007下2007上2006下2006上2005下2005上数据结构与算法算法220020420+22+2数据结构的基本概念0200040002+22线性表及顺序存储0002+20000000栈和队列4442+20200+4242线性链表00000000202树与二叉树20+2220+22+24+2204+20+2查找技术20020002002排序技术002022000+220程序设计基础程序设计方法与风格00000004000结构化程序设计020+202000200面向对象程序设计0002020+200+200+2软件工程基础软件工程基本概念4+22+222+2602404+22结构化分析方法20+20200+400000结构化设计方法02202022022软件测试00+22+20+20+20+22+200+202程序调试20000200+2220+2数据库设计基础数据库的基本概念22+20+220+422+24+22+22+22数据模型2+222+22+222+2204+202+2关系代数22202022020数据库设计与管理2020+20+2002020第一章数据结构与算法1.1算法1、算法:是指解题方案的准确而完整的描述。v 算法不等于程序,也不等于计算机方法,程序的编制不可能优于算法的设计。2、算法的基本特征(1)可行性;针对实际问题而设计的算法,执行后能够得到满意的结果。(2)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性;(3)有穷性,算法必须能在有限的时间内做完,取能在执行有限个步骤后终止,包括合理的执行时间的含义;(4)拥有足够的情报。v 综上所述,所谓算法就是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。3、算法复杂度主要包括算法时间复杂度和算法空间复杂度。(1)算法时间复杂度是指执行算法所需要的计算工作量。可以用执行算法的过程中所需基本运算的执行次数来度量。(2)算法空间复杂度是指执行这个算法所需要的内存空间。【真题练习】(2011年9月)下列叙述中正确的是( )。A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对(2010年3月)算法的时间复杂度是指( )。A)算法的执行时间 B)算法所处理的数据量C)算法程序中的语句或指令条数 D)算法在执行过程中所需要的基本运算次数(2009年9月)算法的空间复杂度是指( )。A)算法在执行过程中所需要的计算机存储空间 B)算法所处理的数据量C)算法程序中的语句或指令条数 D)算法在执行过程中所需要的临时工作单元数(2007年4月)下列叙述中正确的是( )。A)算法的效率只与问题的规模有关,而与数据的存储结构无关B)算法的时间复杂度是指执行算法所需要的计算工作量C)数据的逻辑结构与存储结构是一一对应的D)算法的时间复杂度与空间复杂度一定相关(2008年3月)算法的有穷性是指( )。 A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用(2007年4月)在算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的( )。A)正当性 B)可行性 C)确定性 D)有穷性(2006年9月)下列叙述中正确的是( )。A)一个算法的空间复杂度大,则其时间复杂度也必定大B)一个算法的空间复杂度大,则其时间复杂度必定小C)一个算法的时间复杂度大,则其空间复杂度必定小D)上述三种说法都不对(2005年9月)算法复杂度主要包括时间复杂度和【2】复杂度。(2005年4月)算法具有5 个特性,下列选项中不属于算法特性的是( )。A)有穷性 B)简洁性 C)可行性 D)确定性(2005年4月)问题处理方案正确而完整的描述称为【5】。1.2数据结构的基本概念1、数据结构是指相互有关联的数据元素的集合。2、数据结构研究的三个方面:数据的逻辑结构、存储结构、运算。(1)数据集合中和数元素之间所固有的逻辑关系,即数据的逻辑结构;数据的逻辑结构包含:1)表示数据元素的信息;2)表示各数据元素之间的前后件关系。(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;数据的存储结构有顺序、链接、索引等。1)顺序存储。它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为顺序存储结构。2)链接存储。它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构。3)索引存储:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。(3)对各种数据结构进行的运算。v 数据的逻辑结构反映数据元素之间的逻辑关系,数据的存储结构(也称数据的物理结构)是数据的逻辑结构在计算机存储空间中的存放形式。同一种逻辑结构的数据可以采用不同的存储结构,但影响数据处理效率。3、数据结构的图形表示一个数据结构除了用二元关系表示外,还可以直观地用图形表示。在数据结构的图形表示中,对于数据集合D中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,并简称为结点;为了进一步表示各数据元素之间的前后件关系,对于关系R中的每一个二元组,用一条有向线段从前件结点指向后件结点。4、数据结构分为两大类型:线性结构和非线性结构。(1)线性结构(非空的数据结构)条件:1)有且只有一个根结点;2)每一个结点最多有一个前件,也最多有一个后件。 v 常见的线性结构有线性表、栈、队列和线性链表等。(2)非线性结构:不满足线性结构条件的数据结构。v 常见的非线性结构有树、二叉树和图等。【真题练习】(2011年9月)数据结构分为线性结构与非线性结构,带链的栈属于 【1】 (2009年9月)下列数据结构中,属于非线性结构的是( )。A)循环队列 B) 带链队列 C) 二叉树 D)带链栈(2007年9月)下列叙述中正确的是( )。A)程序执行的效率与数据的存储结构密切相关B)程序执行的效率只取决于程序的控制结构C)程序执行的效率只取决于所处理的数据量D)以上三种说法都不对(2007年9月)下列叙述中正确的是( )。A)数据的逻辑结构与存储结构必定是一一对应的B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C)程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线线结构D)以上三种说法都不对(2005年9月)下列叙述中正确的是( )。A)一个逻辑数据结构只能有一种存储结构B)数据的逻辑结构属于线性结构,存储结构属于非线性结构C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率(2005年9月)数据结构分为逻辑结构和存储结构,循环队列属于【5】结构。(2005年4月)数据的存储结构是指( )。A)存储在外存中的数据 B)数据所占的存储空间量C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示1.3线性表及其顺序存储结构1、线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。线性表是由n(n0)个数据元素组成的一个有限序列。在复杂线性表中,由若干数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。非空线性表的结构特征:(1)且只有一个根结点a ,它无前件;(2)有且只有一个终端点a ,它无后件;(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。2、线性表的顺序储结构具有以下两个基本特点:(1)线性表中所有元素的所占的存储空间是连续的;(2)线性表中各数元素在存储空间中是按逻辑顺序依次存放的。a 的存储地址为:ADR(a )=ADR(a )+(i-1)k,ADR(a )为第一个元素的地址,k代表每个元素占的字节数。v 由此可以看出,在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面,可以通过计算机直接确定第i个结点的存储地址。3、顺序表的运算:插入、删除。(1)顺序表的插入运算:在一般情况下,要在第i(1in)个元素之前插入一个新元素时,首先要从最后一个(即第n个)元素开始,直到第i个元素之间共n-i+1个元素依次向后移动一个位置,移动结束后,第i个位置就被空出,然后将新元素插入到第i项。插入结束后,线性表的长度就增加了1。v 顺性表的插入运算时需要移动元素,在等概率情况下,平均需要移动n/2个元素。(2)顺序表的删除运算:在一般情况下,要删除第i(1in)个元素时,则要从第i+1个元素开始,直到第n个元素之间共n-i个元素依次向前移动一个位置。删除结束后,线性表的长度就减小了1。v 进行顺性表的删除运算时也需要移动元素,在等概率情况下,平均需要移动(n-1)/2个元素。插入、删除运算不方便。【真题练习】(2012年3月)将长度为n的顺序存储在线性表中删除一个元素,最坏情况下需要移动表中的元素个数为( )。(2011年9月)在长度为n的顺序存储的线性表中插入一个元素,最坏情况下需要移动表中 【2】 .(2008年9月)下列叙述中正确的是( )。A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间(2008年9月)线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的3存储结构1.4栈和队列1、栈及其基本运算(1)栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。(2)栈的基本运算:1)插入元素称为入栈运算;2)删除元素称为退栈运算;3)读栈顶元素是将栈顶元素给一个指定的变量,此时指针无变化。栈的存储方式和线性表类似,也有两种,即顺序栈和链式栈。2、队列及其基本运算(1)队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,front指针指向队头。队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。(2)队列运算包括1)入队运算:从队尾插入一个元素;2)退队运算:从队头删除一个元素。(3) 循环队列及其运算:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,因此,从头指针front指向的后一个位置直到队尾指针rear指向的位置之间,所有的元素均为队列中的元素。v 循环队列是队列的链式存储结构,循环队列中元素的个数=rear-front。【真题练习】(2012年3月)下列叙述中正确的是:A、循环队列是队列的一种顺序存储结构 B、循环队列是队列的一种链式存储结构C、循环队列是非线性结构 D、循环队列是一直逻辑结构(2012年3月)下列叙述中正确的是A、栈是一种先进先出的线性表 B、队列是一种后进先出的线性表C、栈和队列都是非线性结构 D、以上三种说法都不对(2012年3月)设循环队列的存储空间为Q(1:3),初始状态为front=rear=30。现经过一系列入队与退队运算后,front=16,rear=15,则循环队列中有( )个元素。(2010年3月)一个队列的初始状态为空。现将元素A,B,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为【】。(2010年3月)设某循环队列的容量为50,如果头指针front45(指向队头元素的前一位置),尾指针rear10(指向队尾元素),则该循环队列中共有【】个元素。(2009年9月)下列数据结果中,能够按照“先进后出”原则存取数据的是( )。A) 循环队列 B) 栈 C)队列 D)二叉树(2009年9月)对于循环队列,下列叙述中正确的是( )。A)队头指针是固定不变的 B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针 D)队头指针可以大于队尾指针,也可以小于队尾指针(2009年3月)下列叙述中正确的是( )。A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表C)循环队列是非线性结构D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构(2009年3月)支持子程序调用的数据结构是( )。A)栈 B)树 C)队列 D)二叉树(2009年3月)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【1】个元素。(2008年9月)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是( )。A)12345ABCDE B)EDCBA54321 C)ABCDE12345 D)54321EDCBA(2008年9月)下列叙述中正确的是( )。A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定(2008年3月)下列关于栈的叙述正确的是( )。 A)栈按“先进先出”组织数据 B)栈按“先进后出”组织数据 C)只能在栈底插入数据 D)不能删除数据(2008年3月)设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有【3】个元素。(2007年4月)下列对队列的叙述正确的是( )。A)队列属于非线性表 B)队列按“先进后出”原则组织数据C)队列在队尾删除数据 D)队列按“先进先出”原则组织数据(2006年9月)按“后进后出”原则组织数据的数据结构是 4。(2006年9月)数据结构分为线性结构和非线性结构,带链的队列属于 5 。(2006年4月)按照“后进先出”原则组织数据的数据结构是( )。A)队列 B)栈 C)双向链表 D)二叉树(2005年9月)下列数据结构中,能用二分法进行查找的是( )。A)顺序存储的有序线性表 B)线性链表 C)二叉链表 D)有序线性链表(2005年9月)下列关于栈的描述正确的是( )。A)在栈中只能插入元素而不能删除元素 B)在栈中只能删除元素而不能插入元素C)栈是特殊的线性表,只能在一端插入或删除元素D)栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素(2005年4月)下列关于栈的描述中错误的是( )。A)栈是先进后出的线性表 B)栈只能顺序存储 C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针1.5线性链表1、线性表顺序存储的缺点:(1)插入或删除的运算效率很低。在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素;(2)线性表的顺序存储结构下,线性表的存储空间不便于扩充;(3)线性表的顺序存储结构不便于对存储空间的动态分配。2、线性链表:线性表的链式存储结构称为线性链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。数据结构中的每一个结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。结点由两部分组成:(1)用于存储据元素值,称为数据域;(2)用于存放指针,称为指针域,用于指向前一个或后一个结点。在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。链式存储方式即可用于表示线性结构,也可用于表示非线性结构。线性链表分为单链表、双向链表和循环链表三种类型。在单链表中,每一个结点只有一个指针域,由这个指针只能找到其后件结点,而不能找到其前件结点。因此,在某些应用中,对于线性链表中的每个结点设置两个指针,一个称为左指针,指向其前件结点;另一个称为右指针,指向其后件结点,这种链表称为双向链表。线性链表,HEAD称为头指针,HEAD=NULL(或0)称为空表,如果是两指针:左指针(Llink)指向前件结点,右指针(Rlink)指向后件结点。3、线性链表的基本运算:查找、插入、删除。(1)在线性链表中包含指定元素的结点之前插入一个新元素。v 在线性链表中插入元素时,不需要移动数据元素,只需要修改相关结点指针即可,也不会出现“上溢”现象。(2)在线性链表中删除包含指定元素的结点。v 在线性链表中删除元素时,也不需要移动数据元素,只需要修改相关结点指针即可。(3)将两个线性链表按要求合并成一个线性链表。(4)将一个线性链表按要求进行分解。(5)逆转线性链表。(6)复制线性链表。(7)线性链表的排序。(8)线性链表的查找。v 线性链表不能随机存取。4、循环链表及其基本运算:在线性链表中,其插入与删除的运算虽然比较方便,但还存在一个问题,在运算过程中对于空表和对第一个结点的处理必须单独考虑,使空表与非空表的运算不统一。为了克服线性链表的这个缺点,可以采用另一种链接方式,即循环链表。与前面所讨论的线性链表相比,循环链表具有以下两个特点:1)在链表中增加了一个表头结点,其数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的结点,而循环链表的头指针指向表头结点;2)循环链表中最后一个结点的指针域不是空,而是指向表头结点。即在循环链表中,所有结点的指针构成了一个环状链。循环链表的优点主要体现在两个方面:一是在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发访问到表中其他所有的结点,而线性单链表做不到这一点;二是由于在循环链表中设置了一个表头结点,在任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。v 循环链表是在单链表的基础上增加了一个表头结点,其插入和删除运算与单链表相同。但它可以从任一结点出发来访问表中其他所有结点,并实现空表与非空表的运算的统一。【真题练习】(2011年9月)下列关于线性链表的叙述中,正确的是( )。A)各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B)各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C)进行插入与删除时,不需要移动表中的元素D)以上三种说法都不对(2006年4月)下列叙述中正确的是( )。A)线性链表是线性表的链式存储结构 B)栈与队列是非线性结构C)双向链表是非线性结构 D)只有根结点的二叉树是线性结构(2005年4月)下列对于线性链表的描述中正确的是( )。A)存储空间不一定是连续,且各元素的存储顺序是任意的B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的存储顺序是任意的1.6树与二叉树1、树的基本概念树是一种简单的非线性结构,所有元素之间具有明显的层次特性。在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称树的根。每一个结点可以有多个后件,称为该结点的子结点。没有后件的结点称为叶子结点。在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。树的最大层次称为树的深度。(二叉树的层数)2、二叉树及其基本性质(1)什么是二叉树二叉树是一种很有用的非线性结构,它具有以下两个特点:1)非空二叉树只有一个根结点;2)每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。v 根据二叉树的概念可知,二叉树的度可以为0(叶结点)、1(只有一棵子树)或2(有2棵子树)。(2)二叉树的基本性质:性质1 在二叉树的第k层上,最多有2k-1个结点;性质2 深度为m的二叉树最多有2 m-1个结点;性质3 度为0的结点(即叶子结点)总是比度为2的结点多一个;性质4 具有n个结点的二叉树,其深度至少为log2 n+1,其中log2 n表示取log2 n的整数部分;3、满二叉树与完全二叉树满二叉树是指除最后一层外,每一层上的所有结点有两个子结点,则k层上有2k-1 个结点,深度为m的满二叉树有2m -1个结点。v 根据完全二叉树的定义可得出:度为1的结点的个数为0或1。完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。性质5 具有n个结点的完全二叉树的深度为log2 n+1;性质6 设完全二叉树共有n个结点。如果从根结点开始,按层序(每一层从左到右)用自然数1,2,n给结点进行编号(k=1,2n),有以下结论:若k=1,则结点为根结点,它没有父结点;若k1,则该结点的父结点编号为INT(k/2);若2k n,则编号为k的结点左子编号为2k;否则该结点无左子结点(也无右子结点);若2k+1 n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。4、二叉树的存储结构在计算机中,二叉树通常采用链式存储结构。与线性链表类似,用于存储二叉树中各元素的存储结点也由两部分组成:数据域和指针域。但在二叉树中,由于每一个元素可以有两个后件(即两个子结点),因此,用于存储二叉树的存储结点的指针域有两个:一个用于指向该结点的左子结点的存储地址,称为左指针域;另一个用于指向该结点的右子结点的存储地址,称为右指针域。v 二叉树存储结构采用链式存储结构,对于满二叉树与完全二叉树可以按层序进行顺序存储。5、二叉树的遍历:指不重复地访问二叉树中的所有结点。(1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树;(2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树;(3)后序遍历(LRD),首先遍历左子树,然后访问遍历右子树,最后访问根结点。【真题练习】(2012年3月)一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为( )。A、4 B、6 C、10 D、16(2011年9月)下列关于二叉树的叙述中,正确的是( )。 A.叶子结点总是比度为2的结点少一个B.叶子结点总是比度为2的结点多一个C.叶子结点数是度为2的结点数的两倍D.度为2的结点数是度为1的结点数的两倍(2011年9月)某系统总体结构图如下图所示:该系统总体结构图的深度是 A.7B.6C.3D.2(2009年9月)在深度为7 的满二叉树中,度为2 的结点个数为【1】。(2010年3月)设二叉树如下:AB C D F E G H 对该二叉树进行后序遍历的结果为【】。(2009年3月)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。A)10 B)8 C)6 D)4(2008年9月)对下列二叉树进行中序遍历的结果 【1】 。ABCDEFXYZY(2008年4月)深度为5的满二叉树有【2】个叶子结点。(2007年9月)一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为( )。A)219 B)221 C)229 D)231(2007年9月)对下列二叉树进行中序遍历的结果为4。FCEADBGHP(2007年4月)下列二叉树进行前序遍历的结果为( )。ABCDEFYXZA)DYBEAFCZX B)YDEBFZXCA C)ABDYECFXZ D)ABCDEFXYZ(2007年4月)某二叉树中有n 个度为2 的结点,则该二叉树中的叶子结点数为( )。A)n+1 B)n-1 C)2n D)n/2(2007年4月)在深度为7 的满二叉树中,度为2 的结点个数为【1】。(2006年9月)对下列二叉树:ABDECF、G 进行中序遍历的结果是_。A)ACBDFEG B)ACBDFGE C)ABDCGEF D)FCADBEG(2005年9月)对如下二叉树FEDBCA进行后序遍历的结果为( )。A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA(2005年9月)在深度为7 的满二叉树中,叶子结点的个数为( )。A)32 B)31 C)64 D)63(2005年9月)一棵二叉树第六层(根结点为第一层)的结点数最多为【4】个。(2005年4月)某二叉树中度为2 的结点有18 个,则该二叉树中有【1】个叶子结点。1.7查找技术查找:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素。查找结果:(查找成功:找到;查找不成功:没找到。)平均查找长度:查找过程中关键字和给定值比较的平均次数。1、顺序查找基本思想:从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查到所要找的元素为止。否则就是表中没有要找的元素,查找不成功。在平均情况下,利用顺序查找法在线性表中查找一个元素,大约要与线性表中一半的元素进行比较,最坏情况下需要比较n次。顺序查找一个具有n个元素的线性表,其平均复杂度为O(n)。下列两种情况下只能采用顺序查找:1)如果线性表是无序表(即表中的元素是无序的),则不管是顺序存储结构还是链式存储结构,都只能用顺序查找。2)即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。2、二分法查找思想:先确定待查找记录所在的范围,然后逐步缩小范围,直到找到或确认找不到该记录为止。前提:必须在具有顺序存储结构的有序表中进行。查找过程:1)若中间项的值等于x,则说明已查到;2)若x小于中间项的值,则在线性表的前半部分查找;3)若x大于中间项的值,则在线性表的后半部分查找。特点:比顺序查找方法效率高。最坏的情况下,需要比较log2n次。v 二分法查找只适用于顺序存储的线性表,且表中元素必须按关键字有序(升序,但允许相邻元素值相等)排列。对于无序线性表和线性表的链式存储结构只能用顺序查找。在长度为n的有序线性表中进行二分法查找,其时间复杂度为O(log2n)。【真题练习】(2010年3月)下列叙述中正确的是_。A)对长度为的有序链表进行查找,最坏情况下需要的比较次数为B)对长度为的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)(2008年9月)在长度为n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。A)O(n) B)O(n2) C)O(log2n) D)O(nlog2n) (2006年9月)在长为64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数为_。A)63 B)64 C)6 D)7(2005年4月)对于长度为n 的线性表进行顺序查找,在最坏情况下所需要的比较次数为( )。A)log2n B)n/2 C)n D)n+11.8排序技术排序是指将一个无序序列整理成按值的有序表,对于长度为n的有序线性表,最坏情况只需比较n次。交换类排序法:(1)冒泡排序法,需要比较的次数为n(n-1)/2;(2)快速排序法。插入类排序法:(1)简单插入排序法,最坏情况需要n(n-1)/2次比较;(2)希尔排序法,最坏情况需要O(n )次比较。选择类排序法:(1)简单选择排序法,最坏情况需要n(n-1)/2次比较;(2)堆排序法,最坏情况需要O(nlog n)次比较。【真题练习】(2009年3月)下列排序方法中,最坏情况下比较次数最少的是_。A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序(2008年3月)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是( )。 A)快速排序 B)冒泡排序 C)直接插入排序 D)堆排序(2007年9月)冒泡排序在最坏情况下的比较次数是( )。A)n(n+1)/2 B)nlog2n C)n(n-1)/2 D)n/2(2006年4月)对长度为10 的线性表进行冒泡排序,最坏情况下需要比较的次数为 【1】 。(2005年9月)对于长度为n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。A)冒泡排序n/2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n-1)/2本章应考点拨:本章内容在笔试中会出现5-6个题目,是公共基础知识部分出题量比较多的一章,所占分值也比较大,约10分。第二章 程序设计基础2.1程序设计设计方法和风格程序设计的风格主要强调:“清晰第一,效率第二”。主要应注重和考虑下述一些因素:(1)源程序文档化1)符号名的命名。符号名能反映它所代表的实际东西,应有一定的实际含义。2)程序的注释。分为序言性注释和功能性注释。序言性注释:位于程序开头部分,包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。功能性注释:嵌在源程序体之中,用于描述其后的语句或程序的主要功能。3)视觉组织。利用空格、空行、缩进等技巧使程序层次清晰。(2)数据说明 1)数据说明的次序规范化;2)说明语句中变量安排有序化;3)使用注释来说明复杂数据的结构。(3)语句的结构。1)在一行内只写一条语句;2)程序编写应优先考虑清晰性;3)程序编写要做到清晰第一,效率第二;4)在保证程序正确的基础上再要求提高效率;5)避免使用临时变量而使程序的可读性下降;6)避免不必要的转移;7)尽量使用库函数;8)避免采用复杂的条件语句;9)尽量减少使用“否定”条件语句;10)数据结构要有利于程序的简化;11)要模块化,使模块功能尽可能单一化;12)利用信息隐蔽,确保每一个模块的独立性;13)从数据出发去构造程序;14)不要修补不好的程序,要重新编写。(4)输入和输出。1)对输入数据检验数据的合法性;2)检查输入项的各种重要组合的合法性;3)输入格式要简单,使得输入的步骤和操作尽可能简单;4)输入数据时,应允许使用自由格式;5)应允许缺省值;6)输入一批数据时,最好使用输入结束标志;7)在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息;8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输出加注释,并设计输出报表格式。【真题练习】(2011年9月)常见的软件开发方法有结构化方法和面向对象方法,对某应用系统经过需求分析建立数据流图(DFD),则应采用 【3】 方法。(2007年9月)下列叙述中,不符合良好程序设计风格的是( )。A)程序的效率第一,清晰第二 B)程序的可读性好C)程序中有必要的注释 D)输入数据前要有提示信息(2007年9月)下列选项中不符合良好程序设计风格的是( )。A)源程序要文档化 B)数据说明的次序要规范化C)避免滥用goto 语句 D)模块设计要保证高耦合、高内聚(2006年9月)下列选项中不符合良好程序设计风格的是_。A)源程序要文档化 B)数据说明的次序要规范化 C)避免滥用goto语句 D)模块设计要保证高耦合,高内聚(2006年9月)以下叙述中正确的是_。A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整2.2结构化程序设计(面向过程的程序设计方法)1、结构化程序设计方法的四条原则是:1、自顶向下;2、逐步求精;3、模块化; 4、限制使用goto语句。(1)自顶向下。程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。(2)逐步求精。对复杂问题,应设计一些子目标作过渡,逐步细化。(3)模块化。一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。(4)限制使用goto语句。2、结构化程序的基本结构:顺序结构,选择结构,重复结构。(1)顺序结构:一种简单的程序设计,即按照程序语句行的自然顺序,一条语句一条语句地执行程序,它是最基本、最常用的结构;(2)选择结构:又称分支结构,包括简单选择和多分支选择结构,可根据条件,判断应该选择哪一条分支来执行相应的语句序列;(3)重复结构:又称循环结构,可根据给定条件,判断是否需要重复执行某一相同程序段。仅仅使用顺序、选择和循环三种基本控制结构就足以表达各种其他形式结构,从而实现任何单入口/单出口的程序。【真题练习】(2009年9月)下列选项中不属于结构化程序设计原则的是( )。A) 可封装 D) 自顶向下 C) 模块化 D) 逐步求精(2009年3月)符合结构化原则的三种基本控制结构是:选择结构、循环结构和【3】。(2008年4月)结构化程序设计的基本原则不包括( )。 A)多态性 B)自顶向下 C)模块化 D)逐步求精(2006年4月)下列选项中不属于结构化程序设计方法的是( )。A)自顶向下 B)逐步求精 C)模块化 D)可复用2.3面向对象的程序设计面向对象的程序设计:以60年代末挪威奥斯陆大学和挪威计算机中心研制的simula语言为标志。客观世界中任何一个事物都可以被看成是一个对象,面向对象方法的本质就是主张从客观世界固有的事物出发来构造系统,提倡人们在现实生活中常用的思维来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域。也就是说,系统中的对象及对象之间的关系能够如实地反映问题域中固有的事物及其关系。面向对象方法的优点:(1)与人类习惯的思维方法一致; (2)稳定性好; (3)可重用性好; (4)易于开发大型软件产品; (5)可维护性好。v 面向对象的程序设计主要考虑的是提高软件的可重用性。对象是面向对象方法中最基本的概念,可以用来表示客观世界中的任何实体,对象是实体的抽象。面向对象的程序设计方法中的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组表示其静态特征的属性和它可执行的一组操作组成。v 对象是属性和方法的封装体。属性即对象包含的信息,操作描述了对象执行的功能,操作也称为方法或服

温馨提示

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

评论

0/150

提交评论