首页 理论教育计算机二级C语言考试大纲与考点精要

计算机二级C语言考试大纲与考点精要

【摘要】:数据结构的基本概念数据结构指相互有关联的数据元素的集合,即数据的组织形式。其中逻辑结构反映数据元素之间逻辑关系;存储结构为数据的逻辑结构在计算机存储空间中的存放形式,有顺序存储、链式存储、索引存储和散列存储4 种方式。线性表及其顺序存储结构线性表的基本概念:线性结构又称线性表,线性表是最简单也是景常用的一种数据结构。深度为1TI 的满二叉树有2m-1 个结点。

(1)算法的相关观念

算法是指一系列解决问题的清晰指令;4 个基本特征:可行性、确定性、有穷性、拥有足够的情报;两种基本要素:对数据对象的运算和操作、算法的控制结构(运算和操作时间的顺序);设计的基本方法有列举法、归纳法、递推法、递归法、减半递推技术和回溯法。算法的复杂度——算法的时间复杂度(执行算法所需要的计算T作量);算法的空间复杂度(执行算法所需的内存空间)。

(2)数据结构的基本概念

数据结构指相互有关联的数据元素的集合,即数据的组织形式。其中逻辑结构反映数据元素之间逻辑关系;存储结构为数据的逻辑结构在计算机存储空间中的存放形式,有顺序存储、链式存储、索引存储和散列存储4 种方式。

数据结构按各元素之间前后件关系的复杂度可划分为:a)线性结构有且只有一个根结点,且每个结点最多有一个直接前驱和一个直接后继的非空数据结构;b)非线性结构是不满足线性结构的数据结构。

(3)线性表及其顺序存储结构

线性表的基本概念:线性结构又称线性表,线性表是最简单也是景常用的一种数据结构。线性表的顺序存储结构:a)元素所占的存储空间必须连续;b)元素在存储空间的位置是按逻辑顺序存放的。

线性表的插入运算——在第i 个元素之前插入一个新元素的步骤:a)把原来第n 个结点至第i 个结点依次往后移一个元素位置;b)把新结点放在第i 个位置上;c)修正线性表的结点个数。在最坏情况下,即插入元素在第一个位置,线性表中所有元素均需要移动。

线性表的删除运算——删除第i 个位置的元素的步骤:a)把第i 个元素之后不包括第i 个元素的n-i 个元素依次前移一个位置;b)修正线性表的结点个数。

(4)栈和队列

栈的基本概念:栈是一种特殊的线性表,其插入运算与删除运算都只在线性表的一端进行,也被称为“先进后出”表或“后进先出”表;栈顶为允许插入与删除的一端;栈底为栈顶的另一端;空栈是指栈中没有元素的栈。

栈的特点:栈顶元素是最后被插入和最早被删除的元素;栈底元素是最早被插入和最后被删除的元素;栈有记忆作用;在顺序存储结构下,栈的插入和删除运算不需移动表中其他数据元素;栈顶指针top 动态反映了栈中元素的变化情况。

顺序存储和运算:人栈运算、退栈运算和读栈顶运算。

队列的基本概念:队列是指允许在一端进行插入,在另一端进行删除的线性表,又称“先进先出”的线性表;队尾是指允许插入的一端,用尾指针指向队尾元素;排头是指允许删除的一端,用头指针指向头元素的前一位置。

循环队列及其运算:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,包括入队运算与退队运算。入队运算是指在循环队列的队尾加入一个新元素。当循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算,这种情况称为“上溢”。退队运算是指在循环队列的队头位置退出-个元素并赋给指定的变量。首先将队头指针进一,然后将排头指针指向的元素赋给指定的变量。当循环队列为空(s=0)时,不能进行退队运算,这种情况称为“下溢”。

(5)线性链表:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。

(6)树和二又树

树的基本概念:树是简单的非线性结构,树中有且仅有一个没有前驱的结点称“根”,其余结点分成m 个互不相交的有限集合{T1,T2,…,Tm},每个集合又是一棵树,称{T1,T2,…,Tm}为根结点的子树。

父结点:每一个结点只有一个前件,无前件的结点只有一个,称为树的根结点(简称树的根);子结点:每一个结点可以后多个后件,无后件的结点称为叶子结点;树的度:所有结点最大的度;树的深度:树的最大层次。

二叉树的定义:二叉树是一种非线性结构,是有限的结点集合,该集合为空(空二叉树)或由一个根结点及两棵互不相交的左右二叉子树组成。可分为满二叉树和完全二叉树,其中满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。

二叉树具有如下两个特点:二叉树可为空,空的二叉树无结点,非空二叉树有且只有一个根结点;每个结点最多可有两棵子树,称为左子树和右子树。

二叉树的基本性质:a.在二叉树的第k 层上至多有2k-l个结点(k≥1);b.深度为m 的二叉树至多有2m-1 个结点;c.对任何一棵二叉树,度为0 的结点(即叶子结点)总是比度为2 的结点多一个;d.具有n 个结点的完全二叉树的深度至少为[log2n]+1,其中[log2n]表示log2n 的整数部分。(www.chuimin.cn)

满二叉树:满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。满二叉树在其第i 层上有2i-l个结点。从上面满二叉树定义可知,二叉树的每一层上的结点数必须都达到最大,否则就不是满二叉树。深度为1TI 的满二叉树有2m-1 个结点。

完全二叉树:完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。如果一棵具有n 个结点的深度为k 的二叉树,它的每一个结点都与深度为k 的满二叉树中编号为l~n 的结点一一对应。

二叉树的存储结构:二叉树通常采用链式存储结构,存储结点由数据域和指针域(左指针域和右指针域)组成。二叉树的链式存储结构也称二叉链表,对满二叉树和完全二叉树可按层次进行顺序存储。

二叉树的遍历:二叉树的遍历是指不重复地访问二叉树中所有结点,主要指非空二叉树,对于空二叉树则结束返回。二叉树的遍历包括前序遍历、中序遍历和后序遍历。

a)前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历有子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作;否则,①访问根结点;②前序遍历左子树;③前序遍历右子树。

b)中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。中序遍历描述为:若二叉树为空,则执行空操作;否则,①中序遍历左子树;②访问根结点;③中序遍历右子树。

c)后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、有子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。后序遍历描述为:若二叉树为空,则执行空操作;否则,①后序遍历左子树;②后序遍历右子树;③访问根结点。

(7)查找技术

顺序查找:在线性表中查找指定的元素。最坏情况下,最后一个元素才是要找的元素,则需要与线性表中所有元素比较,比较次数为n。

二分查找:二分查找也称折半查找,它是一种高效率的查找方法。但二分查找有条件限制,它要求表必须用顺序存储结构,且表中元素必须按关键字有序(升序或降序均可)排列。对长度力n 的有序线性表,在最坏情况下,二分查找法只需比较log2n 次。

(8)排序技术

a)交换类排序法

冒泡排序:通过对待排序序列从后向前或从前向后,依次比较相邻元素的排序码,若发现逆序则交换,使较大的元素逐渐从前部移向后部或较小的元素逐渐从后部移向前部,直到所有元素有序为止。在最坏情况下,对长度为n 的线性表排序,冒泡排序需要比较的次数为n(n-1)/2。

快速排序是迄今为止所有内排序算法中速度最快的一种。它的基本思想是任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。最坏情况下,即每次划分,只得到一个序列,时间效率为O(n2)。

b)插入类排序法

简单插入排序法:把n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1 个元素,排序过程中每次从无序表中取m 第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为渐的有序表。在最坏情况下,即初始排序序列是逆序的情况下,比较次数为n(n-1)/2,移动次数为n(n-1)/2。

希尔排序法:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。

c)选择类排序法。

简单选择排序法:扫描整个线性表,从中选择最小的元素,将它交换到表的最前面;然后对剩下的子表采用同样的方法,直到子表空为止。最坏情况下需要比较n(n-1)/2 次。

堆排序的方法:①将一个无序序列建成堆;②将堆顶元素(序列中的最大项)与堆中最后一个元素交换(最大项应该在序列的最后)。不考虑已经换到最后的那个元素,只考虑前n-l 个元素构成的子序列,将该子序列调整为堆。反复做步骤②,直到剩下的子序列空为止。在最坏情况下,堆排序法需要比较的次数为O(nlog2n)。