2022年国家二级C语言公共基础知识要点及历年真题 .pdf
《2022年国家二级C语言公共基础知识要点及历年真题 .pdf》由会员分享,可在线阅读,更多相关《2022年国家二级C语言公共基础知识要点及历年真题 .pdf(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 算法1.1 算法的基本概念1算法的概念 (必记 ):算法 是指解题方案的准确而完整的描述。分析:要用计算机实现某一任务时,先应设计出一整套解决问题的指导方案,然后具体实现。整套的指导方案称之为算法,而具体的实现称之为程序。并且在设计指导方案时,可不用过多考虑到实现程序的具体细节(即可以一点点的理想化),但在程序实现时,必须受到具体环境的约束(现实不同于理想 )。结论: 算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。2算法的基本特征(必记):a.可行性: 由于算法总是在某个特定的计算工具上实现并执行的,因而受到计算工具的限制,所以在设计算法时,要考虑到设计的算法是否是可性
2、的。b.确定性: 算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。c.有穷性: 算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。d.拥有足够的情报:算法有相应的初始数据。3算法的基本要素:一个算法通常由两个基本要素所组成:一是对数据对象的运算和操作,二是算法的控制结构。基本运算和操作分为四类:a. 算术运算 : (加、减、乘、除等运算) b. 逻辑运算 : (与、或、非等运算) c. 关系运算 : (大于、小于、等于、不等于等运算) d. 数据传输 : (赋值、输入、输出等操作) 算法的控制结构:算法中各操作之间的执行顺序称之为算法的控制结
3、构。一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。注意: 一个计算机系统能执行的所有指令的集合,称为该计算机系统的指令系统。4算法设计基本方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。1.2 算法的复杂度 (必记) 算法的复杂度 主要包括时间复杂度和空间复杂度。1算法的时间复杂度:是指执行算法所需要的计算工作量,是由算法所执行的基本运算次数来度量。可用平均性态和最坏情况两种分析方法。其中平均性态分析是指用各种特定输入下的基本运算次数的加权平均值来度量算法的工作量;而最坏情况分析是指在所有特定输入下的基本运算次数据的最大次数。2算法的空间复杂度:一个算法的空间复杂度,是
4、指执行这个算法所需要的内存空间。包含有三部分所组成:算法程序所占的空间+输入的初始数据所占的存储空间+算法执行过程中所需要的额外空间。历届的考题:1、算法具有五个特性,以下选项中不属于算法特性的是(_) 2005.4 A)有穷性B)简洁性C)可行性D)确定性2、问题处理方案的正确而完整的描述称为_。2005.4 3、下列叙述中正确的是_。2006.9 A)一个算法的空间复杂度大,则其时间复杂度也必定大B)一个算法的空间复杂度大,则其时间复杂度必定小C)一个算法的时间复杂度大,则其空间可复杂度必定小D)上述三种说法都不对精选学习资料 - - - - - - - - - 名师归纳总结 - - -
5、- - - -第 1 页,共 40 页第1页,共26 页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 40 页4、算法复杂度主要包括时间复杂度和_复杂度。 2006.9 1.2 数据结构与算法数据结构作为计算机的一门学科,主要研究以下三个方面的问题:a数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;b在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;c对各种数据结构进行的运算。注意: 讨论以上问题 主要目的 是为了 提高数据处理的效率。 提高效率包括两个方面:一是提高数据处理的速度,二是节省在数据处理过
6、程中所占用的计算机存储空间。2.1 什么是数据结构简单地说, 数据结构是指相互有关联的数据元素的集合。而数据元素之间的关联通常是指其前后件关系(即先后顺序关系 ),如春、夏、秋、冬之间的先后顺序关系。因此, 一个数据结构应包含以下两方面的信息:a.表示数据元素的信息;b.表示各数据元素之间的前后件关系。1数据的逻辑结构所谓数据的逻辑结构,是指反映数据元素之间逻辑关系的数据结构。注意:这种逻辑关系仅指元素之间的固有的一个先后顺序关系,而与它们在计算机中的存储顺序无关。2数据的存储结构数据的存储结构的概念:数据的逻辑结构在计算机存储空间中的存放形式(也称数据的物理结构)。注意:a、数据元素在计算机
7、中存储空间中的位置关系可以与它们的逻辑关系相同,也可以不相同。b、数据的存储结构有顺序、链接、索引等。c、数据元素采用不同的存储结构,其数据处理的效率是不同的。2.2 数据结构的图形表示一般用一个中间标有元素值的方框表示一个数据元素,用一条有向线段从前件结点指向后件结点。父亲春夏秋冬儿子女儿在数据结构中,没有前件的结点成为根结点(如上图中的春与父亲);没有后件的结点称为终端结点(也称为叶子结点,如上图中的冬与儿子和女儿)。注意: 在进行处理时,一个数据结构中的元素结点可能是在动态变化的。这种变化可能是元素结点的个数发生变化,也可以是元素结点的先后顺序发生变化。2.3 线性结构与非线性结构空的数
8、据结构是:一个数据元素都没有的数据结构。根据数据结构中各数据元素之间前后件关系的复杂程度,可将数据结构分为二大类:线性结构和非线性结构。一个非空的数据结构满足下列两个条件,则为线性结构,线性结构又称为线性表。a. 有且只有一个根结点;b.每一个结点最多有一个前件,也最多有一个后件。在上图中,左边的是线性结构,而右边的是非线性结构。注意: 线性结构与非线性结构都可以是空的数据结构。一个空的数据结构究竟属于线性结构还是属于非线性结构,要根据具体情况来确定。如果对该数据结构的运算是按线性结构的规则来处理的,则属于线性结构;否则属于非线性结构。历届的考题:1、数据的存储结构是指(_)2005.4 A)
9、存储在外存中的数据C)数据在计算机中的顺序存储方式2、下列叙述中正确的是(_)2005.9 B)数据所占的存储空间量D)数据的逻辑结构中计算机中的表示A)一个逻辑数据结构只能有一种存储结构精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 40 页第2页,共26 页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 40 页B)数据的逻辑结构属于线性结构,存储结构属于非线性结构C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D)一个逻辑数据结构可以有多种存储结构
10、,且各种存储结构影响数据处理的效率1.3 线性表及其顺序存储结构3.1 线性表的基本概念非空线性表的结构特征如下:a.有且只有一个根结点,它无前件;b.有且只有一个终端结点,它无后件;c.除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。春夏秋冬线性表中结点的个数n 称为线性表的长度。当n=0 时,称为空表。3.2 线性表的顺序存储结构线性表的顺序存储结构具有以下两个基本特点:a.线性表中所有元素所占的存储空间是连续的;b.线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。注意:在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定在后件元素的
11、前面。在线性表的顺序存储结构中,如第一个元素的地址为ADR(a1),每个元素占用的存储空间大小为k 个字节,则线性表中第i 个元素的存储地址为:ADR(a1)+(i-1)*k 。3.3 顺序表的插入运算春1001 1002 1003 1004 夏春夏秋冬秋冬在线性表的顺序存储结构中,当插入元素时,插入点后的元素都要向后移动一位,以让出一个存储空间。在平均情况下,要在线性表中插入一个新元素,需要移动表中一半的元素。因此,在线性表顺序存储的情况下,要插入一个新元素,其效率是很低的。3.4 顺序表的删除运算在线性表的顺序存储结构中,当删除元素时,删除点后的元素都要向前移动一位,以保证元素都是相邻存储
12、的。在平均情况下,要在线性表中删除一个元素,需要移动表中一半的元素。因此,在线性表顺序存储的情况下,要删除一个元素,其效率是很低的。1.4 栈和队列4.1 栈及其基本运算1什么是栈栈是一种特殊的线性表。栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的一端称为栈底。栈按照 先进后出 (FILO) 或后进先出 (LIFO) 组织数据,栈具有记忆作用。用 top 表示栈顶位置,用botton 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 40 页表示栈底。第3页,共26 页精选学习资料 - - - -
13、- - - - - 名师归纳总结 - - - - - - -第 6 页,共 40 页2栈的顺序存储及其运算栈的基本运算有三种:.入栈运算 、退栈运算 和.读栈顶元素 。4.2 队列及其基本运算1什么是队列队列是允许在一端进行插入、而在另一端进行删除的特殊的线性表。允许插入的一端称为队尾,允许删除的一端称为排头 (或队头 )。队列又称为 先进先出 (FIFO) 或后进后出 (LILO) 的线性表,它体现了先来先服务 的原则。往队列的队尾插入一个元素称为入队运算 ,从队列的排头删除一个元素称为退队运算 。2循环队列及其运算所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环
14、状空间,供队列循环使用。队列空和队列满的条件如下:队列空的条件为 s=0 ; 队列满的条件为 s=1 且 front=rear. 循环队列主要有两种基本运算:入队运算和退队运算。a.入队运算: 在循环队列的队尾加入一个新元素,首先将队尾指针进一(即 rear=rear+1),并当rear=m+1 时置rear=1;然后将新元素插入到队尾指针指向的位置。注意:当循环队列非空(s=1)且队尾指针等于排头指针时,说明循环队列已满,不能进行入队运算,这种情况称为 上溢 。b. 退队运算:指在循环队列的排头位置退出一个元素并赋给指定的变量。首先将排头指针进一front=front+1) ,并当front
15、=m+1 时置 front=1; 然后将排头指针指向的元素赋给指定的变量。注意:当循环队列为空(s=0)时,不能进行退队运算,这种情况称为下溢 。历届的考题:1、下列关于栈的描述中错误的是(_)2005.4 A)栈是先进后出的线性表B)栈只能顺序存储C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针2、按照 后进先出 原则组织数据的数据结构是(_)2006.4 A)队列B)栈C)双向链表D)二叉树3、列关于栈的描述正确的是(_)2005.9 A)在栈中只能插入元素而不能删除元素B)在栈中只能删除元素而不能插入元素C)栈是特殊的线性表,只能在一端插入或删除元素D)栈是特殊的线性表,
16、只能在一端插入元素,而在另一端删除元素第4页,共26 页( 即精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 40 页4、数据结构分为逻辑结构和存储结构,循环队列属于_结构。 2005.9 5、按“ 先进后出 ” 原则组织数据的数据结构是_。2006.9 1.5 线性链表5.1 线性链表的基本概念1.链式存储在顺序存储方式中所有的数据元素在内存中是相邻存放的,从而造成了在插入与删除数据元素时,需要大量移动相应的数据元素。为了解决这种问题,可以将每个数据元素存储在内存中不相邻的不同位置,并利用上一个数据元素在存有数据的同时,也存放下一个数
17、据元素所在的位置地址(称为一个存储单元,即结点),以便查找。这就是链式存储方式。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放地址,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件 )。注意: a、在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的head 头结点开始结点a1 a2 终端结点an逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。b、 链式存储方式既可以用于表示线性结构,也可以用于表示非线性结构。在用链式结构表示较复杂的非线性结构时,其指针域的个数要多一些。
18、2线性链表线性表的链式存储结构称为线性链表 。 如果结点中有两个指针,一个用于指向前一个结点,而另一上用于指向后一个结点,则称之为双向链表。dhead 头结点开始结点a1 a2 终端结点an 3带链的栈:栈的链式存储结构称为带链的栈 。4带链的队列:队列的链式存储结构称为带链的队列 。5.2 线性链表的基本运算:查找、插入、删除。历届的考题:1、下列对于线性链表的描述中正确的是(_)2005.4 A)存储空间不一定是连续,且各元素的存储顺序是任意的B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的
19、存储顺序是任意的2、下列叙述中正确的是(_)2006.4 A)线性链表是线性表的链式存储结构C)双向链表是非线性结构B)栈与队列是非线性结构D)只有根结点的二叉树是线性结构3、数据结构分为线性结构和非线性结构,带链的队列属于_。2006.9 1.6 树与二叉树6.1 树的基本概念树是一种简单的非线性结构,所有元素之间具有明显的层次特性。a.在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点,简称为树的根。b.在树结构中,一个结点所拥有的后件个数称为该结点的度;在树中,所有结点中的最大的度称为树的度。精选学习资料 - - - - - - - - - 名师归纳总
20、结 - - - - - - -第 8 页,共 40 页c.树具有明显的层次关系,即树是一种层次结构。d.数的最大层次称为树的深度。第5页,共26 页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 40 页f.在树中,叶子结点没有子树。A 如左图中,1、A 为根结点;E B F C G J H K D I L 2、E、F、J、H、K、L、M 为叶子结点。3、树中 A、I 都有3 个子结点,故树的度为3。M 4、 整个树中,总共分为 4 层,故树的深度为4。树形表示法6.2 二叉树及其基本性质1什么是二叉树:二叉树是一种很有用的非线性结构。
21、二叉树具有以下两个特点:a.非空二叉树只有一个根结点;b.每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。由以上特点可以看出,在二叉树中,每一个结点的度最大为2。2二叉树的基本性质:(重要 ) a.在二叉树的第k 层上,最多有2k-1(k=1) 个结点。二叉树b.深度为m 的二叉树最多有2m-1 个结点。深度为m 的二叉树是指二叉树共有m 层。c.在任意一棵二叉树中,度为0 的结点 (即叶子结点 )总是比深度为2 的结点多一个。d.具有 n 个结点的二叉树,其深度至少为log2n+1,其中 log2n表示取log2n 的整数部分。A、 第四层中,最多有24-1=23=8 个结点。B
22、、树的深度为4,最多有24-1=16-1=15 个结点。C、度为0 的结点有8 个, 度为2 的结点有 7 个。3满二叉树与完全二叉树满二叉树与完全二叉树是两种特殊形态的二叉树。a.满二叉树: 除最后一层外,每一层上的所有结点都有两个子结点。这就是说,在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第k 层上有2k-1 个结点,且深度为m 的满二叉树有2m-1 个结点。b.完全二叉树: 除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。注意:满二叉树也是完全二叉树,而完全二叉树一般不是满二叉树。完全二叉树还具有以下性质:a.具有 n 个结点的完全二叉树的深
23、度为log2n +1。完全二叉树6.3 二叉树的存储结构满二叉树非满二叉树在计算机中,二叉树通常采用链式存储结构。6.4 二叉树的遍历: (重要) 在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历、后序遍第6页,共26 页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 40 页历。a.前序遍历:首先访问根结点,然后遍历左子树,最后遍历右子树。b.中序遍历:首先遍历左子树,然后访问根结点,最后遍历右子树。c.后序遍历:首先遍历左子树,然后遍历右子树,最后访问根结点。C 2 F 1 E 6 2 C 5
24、 F 6 E C 4 F 9 E 8 A 3 D 4 B 5 G 7 H 8 P 1 A 9 4 D 3 B 8 G 7 H 9 P A 1 D 3 B 2 G 7 H 5 P 6 前序: FCADBEGHP 中序: ACBDFEHGP 后序: ABDCHPGEF 注意: 在树结构中,每一个结点都代表一棵子树。前序遍历中一定以根结点开头,后序遍历一定以根结点结尾,而中序遍历中,根结点前面的为树的左子树,而其后面的为树的右子树。历届的考题:1、在深度为7 的满二叉树中,叶子结点的个数为()2006.4 A)32 B)31 C)64 D)63 2、对下图1 所示二叉树图 1 图 2 进行中序遍历的
25、结果是_。2006.9 A)ACBDFEG B)ACBDFGE C)ABDCGEF D)FCADBEG 3、对如下图2 所示二叉树,进行后序遍历的结果为()2006.4 A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA 4、某二叉树中,度为2 的结点有18 个,则该二叉树中有_个叶子结点。 2005.4 5、一棵二叉树第六层(根结点为第一层)的结点数最多为_个。 2005.9 1.7 查找技术7.1 顺序查找:顺序查找的方法是:用被查元素与线性表中的元素逐一比较,直到找出相等的元素,则查找成功;或者找遍所有元素都不相等,则查找失败。顺序查找的优点:对线性表的元素的逻辑次序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年国家二级C语言公共基础知识要点及历年真题 2022 国家 二级 语言 公共 基础知识 要点 历年
限制150内