全国计算机等级考试.docx
- 文档编号:2405701
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:22
- 大小:38.73KB
全国计算机等级考试.docx
《全国计算机等级考试.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试.docx(22页珍藏版)》请在冰豆网上搜索。
全国计算机等级考试
2011年全国计算机等级考试
第一章数据结构与算法
考点1:
算法
1.算法的时间复杂度是指算法执行过程中所需要的基本运算次数。
2.算法的空间复杂度是指算法执行过程中所需要的存储空间。
3.算法通常由两种基本要素组成,一是对数据对象的运算和操作,二是算法的控制结构。
4.在同一个问题规模下,如果算法执行所需的基本运算次数取决于某一特定输入时,可以用平均性态和最坏情况复杂性两种方法来分析算法的工作量。
5.算法设计基本方法主要有列举法、归纳法、递推、递归和减半递推技术。
考点2:
数据结构的基本概念
1.数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。
一般说来,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。
而采用不同的存储结构,其数据处理的效率是不同的。
2.所谓数据处理,是指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。
3.数据结构是指相互有关联的数据元素的集合。
4.数据元素之间的任何关系都可以用前驱和后继关系来描述。
5.在数据结构中,没有前驱的结点称为根结点,没有后继的结点称为终端结点(也称为叶子结点)。
数据结构中除了根结点与终端结点外的其他结点一般称为内部结点。
6.在数据结构中,结点及结点间的相互关系是数据的逻辑结构。
数据结构按逻辑关系的不同,通常可分为线性结构和非线性结构两类。
7.一个非空的数据结构满足以下两点:
有且只有一个根结点;每一个结点最多有一个前驱,也最多有一个后继,则称该数据结构为线性结构,线性结构又称线性表。
线性结构与非线性结构都可以是空的数据结构,一个空的数据结构究竟属于线性结构还是非线性结构,根据具体情况来确定。
考点3:
线性表及其顺序存储结构
1.给定一个有n个元素的线性表,若采用顺序存储结构,则在等概率前提下,向其插入一个元素需要移动的元素个数平均为n/2。
2.在稍微复杂的线性表中,一个数据元素可以由若干个数据项组成,在这种情况下,常把数据元素称为记录。
3.在计算机中存放线性表,一种最简单的方法是顺序存储。
即在顺序存储结构中,线性表中的每一个数据元素在计算机存储空间中的存储地址由该元素在线性表中的位置序号唯一确定的。
4.在程序设计语言中,通常定义一个一维数组来表示线性表的顺序存储空间。
考点4:
栈和队列
1.栈是一种特殊的线性表,其插入与删除运算都只能在线性表的一段进行。
在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。
栈是按照“先进后出”或“后进先出”的原则组织数据的,由此可知,栈具有记忆功能。
2.栈的基本运算有三种:
入栈、退栈与读栈顶元素。
入栈运算是指在栈顶位置插入一个新元素,栈顶指针进一。
退栈元素是指取出栈顶元素并将该元素赋给一个指定的变量,栈顶指针退一。
读栈顶元素是指将栈顶元素赋给一个指定的变量,这个运算不删除栈顶元素,所以栈顶指针不会改变。
3.队列是指允许在一端进行插入,而在另一端进行删除的线性表。
允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素。
允许删除的一端称为队头,通常也用一个排头指针(front)指向队头元素的前一个位置。
队列又称为“先进先出”或“后进后出”的线性表。
4.往队列的队尾插入一个元素称为入队运算,队尾指针就进一。
从队列的排头删除一个元素称为退队元素,排头指针就进一。
与栈类似,在程序设计语言中,用一维数组作为队列的顺序存储空间。
5.根据数据结构对队列先进先出的定义,打印作业应该存放在队列中。
6.递归算法一般需要利用栈实现。
7.对长度为n的线性表进行插入一个新元素或删除一个已有的元素时,在最坏情况下所需要的比较次数为n。
8.在一个容量为25的循环队列中,若头指针front=16,尾指针rear=9,则该循环队列中共有18个元素。
因为,从队头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。
考点5:
线性链表
1.线性链表是链式存储结构,在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定。
2.链式存储方式既可用于表示线性结构,也可用于表示非线性结构。
在用链式结构表示较复杂的非线性结构时,其指针域的个数要多一些。
3.在链式存储方式中,要求每个结点由两部分组成:
一部分用于存放数据元素值,称为数据域;另一部分用于存放数据元素的指针,称为指针域。
其中指针用于指向该结点的后一个结点(即前驱或后继)。
4.数据结构分为逻辑结构与物理结构(存储结构),线性链表属于物理结构(存储结构)。
5.在线性单链表中,每一个结点只有一个指针域,由这个指针只能找到后继结点,但不能找到前驱结点。
线性双向链表每个结点设置两个指针,一个称为左指针,用以指向其前驱结点,另一个称为右指针,用以指向其后继结点。
与单向链表相比,双向链表的优点之一是更容易访问相邻结点。
6.在实际应用中,带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。
7.为了要在线性链表中插入一个新元素,首先要给该元素分配一个新结点用于存储该元素的值。
新结点可以从可利用栈中取得。
8.在线性链表中删除一个元素后,只需改变被删除元素所在结点的前一个结点的指针域即可。
由于可用栈是用于收集计算机中所有的空闲结点,因此,当从线性链表中删除一个元素后,该元素的存储结点就变为空闲,应将该空闲结点送回到可用栈。
9.在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发访问到表中其他所有的结点,而线性单链表做不到这一点。
另外,由于在循环链表中设置了一个表头结点,因此任何情况下,循环链表中至少有一个结点存在,从而使空表与非空表的运算统一。
考点6:
树与二叉树
1.二叉树的遍历是指不重复地访问二叉树中所有结点,二叉树是一种非线性结构。
在先左后右的原则下,根据访问根结点的次序,可将二叉树的遍历分为三种:
前序遍历、中序遍历、后续遍历,是一个递归的过程。
2.前序遍历首先访问根结点,然后遍历左子树,最后遍历右子树;在遍历左、右子树时,仍然采用前序遍历的方法。
中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树,在遍历左、右子树时,仍然采用中序遍历的方法。
后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点,在遍历左、右子树时,仍然采用后序遍历的方法。
3.所谓满二叉树是指这样的一种二叉树:
除最后一层外,每一层上的所有结点都有两个子结点。
在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。
4.在树结构中,一个结点所拥有的后继个数称为该结点的度。
在树中,所有结点中的最大的度称为树的度。
(设树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。
则T中的叶子结点数为8。
设一个二叉树中有3个叶子节点,有8个度为1的结点,则该二叉树中的结点数为13。
)
5.所谓完全二叉树是指这样的二叉树:
除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
更确切地说,如果从根结点起,对二叉树的结点自上而下、自左至右用自然数进行连续编码,则深度为m、且有n个结点的二叉树,当且仅当其每一个结点都与深度为m的满二叉树中编号从1到n的结点一一对应时,称之为完全二叉树。
(设一棵完全二叉树共有739个结点,则在该二叉树中有370(739+1后除2)个叶子结点)。
对于完全二叉树来说,叶子结点只可能在层次最大的两层上出现;对于任何一个结点,若其右分支下的子孙结点的最大层次为p,则其左分支下的子孙结点的最大层次或为p,或为p+1。
由满二叉树与完全二叉树的特点可以看出,满二叉树也是完全二叉树,而完全二叉树一般不是满二叉树。
完全二叉树具有以下两个性质:
(1)具有n个结点的完全二叉树的深度为【log2n】+1。
(2)设完全二叉树共有n个结点。
如果从根结点开始,按层序(每一层从左到右)用自然数1,2,…,n给结点进行编号,则对于编号为k(k=1,2,…,n)的结点有以下结论:
①若k=1,则该结点为根结点,它没有父节点;若k>1,则该结点的父结点编号为INT(k/2)。
②若2k≤n,则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(显然也没有右子结点)。
③若2k+1≤n,则编号为k结点的右子结点编号为2k+1;否则该结点无右子结点。
6.设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后续遍历结果为DEBFCA。
考点7:
查找技术
1.二分法查找只适用于顺序存储的有序表。
在此所说的有序表是指线性表中的元素按值非递减排列(即从小到大,但允许相邻元素值相等)。
设有序线性表的长度为n,设待查元素为x,则二分法查找(也称对分查找)的方法如下:
●将x与线性表的中间项进行比较;
●若中间项的值等于x,则说明查到,查找结束;
●若x小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找;
●若x大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找。
反复进行这个过程一直进行到查找成功或子表长度为0(说明线性表中没有这个元素)为止。
显然,当有序线性表为顺序存储时才能采用二分查找,并且,二分查找的效率要比顺序查找高得多。
对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较n次。
2.顺序查找又称顺序搜索。
顺序查找一般是指在线性表中查找指定的元素,其基本方法如下:
从线性表中的第一个元素开始,依次将线性表中的元素与被查元素进行比较,若相等则表示找到(即查找成功);若线性表中所有的元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。
在长度为n的线性表中查找一个表中不存在的元素,需要的比较次数为n。
对于大的线性表来说,顺序查找的效率是很低的。
虽然顺序查找的效率不高,但在下列两种情况下也只能采用顺序查找:
●如果线性表为无序表(即表中元素的排列是无序的),则不管是顺序存储结构还是链式存储结构,都只能用顺序查找。
●即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。
考点8:
排序技术
1.冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。
假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。
一般要小于此复杂度。
冒泡排序法的基本过程如下:
首先,从表头开始往后扫描线性表,在扫描过程中逐次比较相邻两个元素的大小。
若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序。
显然,在扫面过程中,不读地将两相邻元素中的大者往后移动,最后就将线性表中的最大者换到表的最后,这也是线性表中最大元素应有的位置。
然后,从后到前扫描剩下的线性表,同样,在扫描过程中逐次比较相邻两个元素的大小。
若相邻两个元素中,后面的元素小于前面的元素,则将它们互换,这样就又消去了一个逆序。
显然,在扫描过程中,不断地将两相邻元素中的小者往前移动,最后就将剩下线性表中的最小者换到了表的最前面,这也是线性表中最小元素应有的位置。
对剩下的线性表重复上述过程,直到剩下的线性表变空为止,此时的线性表已经变为有序。
在上述排序过程中,对线性表的每一次来回扫描后,都将其中的最大者沉到了表的底部,最小者像气泡一样冒到表的前头。
且冒泡排序又称下沉排序。
2.堆排序的方法对于
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国 计算机等级考试
![提示](https://static.bdocx.com/images/bang_tan.gif)