二年级公共基础知识教材精讲完整版.pdf
《二年级公共基础知识教材精讲完整版.pdf》由会员分享,可在线阅读,更多相关《二年级公共基础知识教材精讲完整版.pdf(243页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 二年级公共基础知识教材精讲 HUA system office room【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】目 录 视频讲解教师简介.教材精讲部分视频讲解.第 1 章 数据结构与算法视频讲解.1.1 算 法.1.2 数据结构的基本概念.1.3 线性表及其顺序存储结构.1.4 栈和队列.1.5 线性链表.1.6 树与二叉树.1.7 查找技术.2018 年 9 月全国计算机等级考试二级公共基础知识【教材精讲真题解析】讲义与视频课程 最新资料,WORD 格式,可编辑修改!1.8 排序技术.第 2 章 程序设计基础视频讲解.2.1 程序设计方法与风格.2.2 结构化程序设
2、计.2.3 面向对象的程序设计.第 3 章 软件工程基础视频讲解.3.1 软件工程基本概念.3.2 结构化分析方法.3.3 结构化设计方法.3.4 软件测试.3.5 程序的调试.第 4 章 数据库设计基础视频讲解.4.1 数据库系统的基本概念.4.2 数据模型.4.3 关系代数.4.4 数据库设计与管理.真题解析部分.全国计算机等级考试二级公共基础知识真题精选(一).全国计算机等级考试二级公共基础知识真题精选(二).考试形式 1公共基础知识不单独考试,与其他二级科目组合在一起,作为二级科目考核内容的一部分。2考试方式为上机考试,10 道选择题,占 10 分。大纲基本要求 1掌握算法的基本概念。
3、2掌握基本数据结构及其操作。3掌握基本排序和查找算法。4掌握逐步求精的结构化程序设计方法。5掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。6掌握数据库的基本知识,了解关系数据库的设计。知识点分布 1数据结构与算法 2程序设计基础 3软件工程基础 4数据库设计基础 第 1 章 数据结构与算法视频讲解 1.1 算法 1.2 数据结构的基本概念 1.3 线性表及其顺序存储结构 1.4 栈和队列 1.5 线性链表 1.6 树与二叉树 1.7 查找技术 1.8 排序技术 本章考点 1算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。2数据结构的定义;数据的逻辑结构与存储
4、结构;数据结构的图形表示;线性结构与非线性结构的概念。3线性表的定义;线性表的顺序存储结构及其插入与删除运算。4栈和队列的定义;栈和队列的顺序存储结构及其基本运算。5线性单链表、双向链表与循环链表的结构及其基本运算。6树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。1.1 算 法 一、算法的基本概念 1算法的定义 算法是指解题方案的准确而完整的描述,即算法是对特定问题求解步骤的一种描述。*算法不等于程序,也不等于计算方法。2算法的基本特征 (1)可行性(Effectiveness)算法中的每一
5、个步骤必须能够实现。算法执行的结果要能够达到预期的目的。(2)确定性(Definiteness)算法的确定性,是指算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。(3)有穷性(Finiteness)算法的有穷性是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。*算法的有穷性还应包括合理的执行时间 (4)拥有足够的情报 输入是否足够并正确,输出是否合理。初始状态是否正确。二、算法设计基本方法 1列举法 (1)基本思想 根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。(2)特点 简单,方便用计算机进行
6、大量列举;情况较多时,工作量将会很大。(3)使用 将与问题有关的知识条理化、完备化、系统化,从中找出规律,进行分类,减少列举量。例 1.1 今有鸡母一,值钱三;鸡翁一,值钱二;鸡雏一,值钱半。凡百钱买百鸡,问鸡母、鸡翁、鸡雏各几何?假设买母鸡 I 只、公鸡 J 只、小鸡 K 只。根据题意,粗略的列举算法描述如下:FOR I=0 TO 100 STEP 1 DO FOR J=0 TO 100 STEP 1 DO FOR K=0 TO 100 STEP 1 DO IF(I+J+K=100)AND(3*I+2*J+0.5*K=100.0)THEN PRINT I,J,K END 共有三层循环,每层循
7、环各需要循环 101 次,大约为 100 万次。优化后的算法 FOR I=0 TO 33 STEP 1DO FOR J=0 TO 50-1.5*I STEP 1 DO K=100-I-J IF(3*I+2*J+0.5*K=100.0)THEN PRINT I,J,K END 共有两层循环,循环次数为 2归纳法 (1)基本思想 通过列举少量的特殊情况,经过分析最后找出一般的关系。(2)特点 归纳是一种抽象,即从特殊现象中找出一般关系。(3)使用 由于在归纳的过程中不可能对所有的情况进行列举。因此,最后由归纳得到的结论还只是一种猜测,还需要对这种猜测加以必要的证明。实际上,通过精心观察而得到的猜测
8、得不到证实或最后证明猜测是错的,也是常有的事。3递推 (1)基本思想 从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。(2)特点 本质上属于归纳法,递推关系式往往是归纳的结果。(3)使用 递推算法在数值计算中是极为常见的。但 是,对于数值型的递推算法必须要注意数值计算的稳定性问题。4递归*(1)基本思想 为了降低问题的复杂程度,将问题逐层分解,最后归结为一些最简单的问题,这种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合。(2)特点 结构清晰,可读性强。(3)使用 递归在可计算性理论和算法设计中占有很重要的
9、地位。(4)分类 直接递归(自己调用自己)和间接递归(P 调用 Q,Q 又调用 P)。例 1.2 编写一个过程,对于输入的参数 n,依次打印输出自然数 1 到 n。非递归算法:wrt(int n)FOR k=1 TO n STEP 1 DO PRINT k RETURN 递归算法:wrt1(int n)IF(n0)THEN wrt1(n-1)PRINT n RETURN 5减半递推技术 所谓“减半”,是指将问题的规模减半,而问题的性质不变;所谓“递推”,是指重复“减半”的过程。例 1.3 设方程 f(x)=0 在区间a,b上有实根,且 f(a)与 f(b)异号。利用二分法求该方程在区间a,b上
10、的一个实根。用二分法求方程实根的减半递推过程如下:首先取给定区间的中点 c=(a+b)2。然后判断 f(c)是否为 0。若 f(c)=0,则说明 C 即为所求的根,求解过程结束;如果 f(c)0,则根据以下原则将原区间减半:若 f(a)f(c)0,则取原区间的前半部分;若 f(b)f(c)0,则取原区间的后半部分。最后判断减半后的区间长度是否已经很小:若|a-b|n 时,认为在最后一个元素之后(第 n+1 个元素之前)插入;*当 i1 时,认为在第 1 个元素之前插入。(2)然后从最后一个元素开始,直到第 i 个元素,其中每一个元素均往后移动一个位置。(3)最后将新元素插入到第 i 个位置,并
11、且将线性表的长度增加 1。*由于大多数情况下需要移动数据元素,在线性表顺序存储的情况下,要插入一个新元素,其效率是很低的。四、顺序表的删除运算 例 1.10 图 1.7(a)为一个长度为 8 的线性表顺序存储在长度为 10 的存储空间中。现在要求删除线性表中的第 1 个元素(即删除元素 29)。再删除线性表中的第 6 个元素。图 1.7 线性表在顺序存储结构下的删除 假设线性表的存储空间为 V(1:m),线性表的长度为 n(nm),删除的位置为 i(表示删除第 i 个元素)。则删除的过程如下:(1)首先处理以下两种异常情况:*当线性表为空(即 n=0)时错误,不能进行删除,算法结束;*当 in
12、 时,错误,不能进行删除,算法结束;(2)删除线性表中的第 i 个元素;(3)然后从第 i+1 个元素开始,直到最后一个元素,其中每一个元素均依次往前移动一个位置;(4)最后将线性表的长度减小 1。*由线性表在顺序存储结构下的插入与删除运算可以看出,线性表的顺序存储结构对于小线性表或者其中元素不常变动的线性表来说是合适 的,因为顺序存储的结构比较简单。*但这种顺序存储的方式对于元素经常需要变动的大线性表就不太合适了,因为插入与删除的效率比较低。1.4 栈和队列 一、栈及其基本运算 1什么是栈 定义:限定在一端进行插入与删除的线性表 *在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另
13、一端称为栈底。用指针 top 来指示栈顶的位置,用指针 bottom 指向栈底。*栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的,因此,栈也被称为“先进后出”表或“后进先出”表。*栈具有记忆作用。*往栈中插入一个元素称为入栈运算,从栈中删除一个元素(即删除栈顶元素)称为退栈运算。计算机系统在处理时要用一个线性表来动态记忆调用过程中的路径,其基本原则如下:(1)在开始执行程序前,建立一个线性表,初始状态为空;(2)发生调用时,将当前调用的返回点地址插入到线性表的末尾;(3)
14、当遇到从某个子程序返回时,其返回点地址从线性表的末尾取出(即删除线性表的最后一个元素)。图 1.9 栈示意图 图 1.8 中给出了具有嵌套调用关系的五个程序,其中主程序要调用子程序 SUB1,SUB1 要调用子程序 SUB2,SUB2 要调用子程序 SUB3,SUB3 要调用子程序 SUB4,SUB4 不再调用其他子程序了。图 1.8 主程序与子程序之间的调用关系 图 1.8 中五个程序在执行过程中的调用顺序以及线性表中元素变化的情况如下:(1)主程序开始执行前,建立一个空线性表。即线性表的状态为()。(2)开始执行主程序 MAIN。当要调用子程序 SUB1 时,先将本次调用的返回点地址 A
15、插入到线性表的末尾。此时,线性表的状态为(A)。(3)开始调用执行子程序 SUB1。当要调用子程序 SUB2 时,先将本次调用的返回点地址B 插入到线性表的末尾。此时,线性表的状态为(A,B)。(4)开始调用执行子程序 SUB2。当要调用子程序 SUB3 时,先将本次调用的返回点地址C 插入到线性表的末尾。此时,线性表的状态为(A,B,C)。(5)开始调用执行子程序 SUB3。当要调用子程序 SUB4 时,先将本次调用的返回点地址D 插入到线性表的末尾。此时,线性表的状态为(A,B,C,D)。由上述逐步调用的过程可以看出,每次发生调用时,都需要将当前调用的返回点地址插入到线性表的末尾,而这种对
16、线性表的插入操作是不需要移动线性表中原有元素的。并且,各返回点地址在线性表中的存放顺序恰好是调用顺序。(6)开始调用执行子程序 SUB4。由于子程序 SUB4 不再调用其他子程序,执行完子程序SUB4 后要返回到子程序 SUB3 的地址 D 处。其中返回点地址 D 取自线性表的最后一个元素。取出 D 后,线性表的状态为(A,B,C)。(7)返回到子程序 SUB3 的 D 处继续执行,执行完子程序 SUB3 后要返回到子程序 SUB2的地址 C 处。其中返回点地址 C 取自线性表的最后一个元素。取出 C 后,线性表的状态为(A,B)。(8)返回到子程序 SUB2 的 C 处继续执行,执行完子程序
17、 SUB2 后萋返回到子程序 SUB1的地址 B 处。其中返回点地址、取自线性表的最后一个元素。取出 B 后,线性表的状态为(A)。(9)返回到子程序 SUB1 的 B 处继续执行,执行完子程序 SUB1 后要返回到主程序 MAIN的地址 A 处。其中返回点地址 A 取自线性表最后一个元素。取出 A 后,线性表变空,即线性表的状态为()。(10)返回到主程序 MAIN 的 A 处继续执行,直到主程序 MAIN 执行完成。由上述逐步返回的过程可以看出,当由子程序返回到上一个调用程序时,需要从线性表的末尾取出返回点地址,即从线性表中删除最后一个元素,而这种对线性表的删除操作也是不需要移动线性表中其
18、他数据元素的。2栈的顺序存储及其运算 图 1.10(a)是容量为 10 的栈顺序存储空间,栈中已有 6 个元素;图 1.10(b)与图1.10(c)分别为入栈与退栈后的状态。图 1.10 栈在顺序存储结构下的运算 在栈的顺序存储空间 S(1:m)中,S(bottom)通常为栈底元素(在栈非空的情况下),S(top)为栈顶元素。top=0 表示栈空;top=m 表示栈满。栈的基本运算有三种:入栈、退栈与读栈顶元素。(1)入栈运算 入栈运算是指在栈顶位置插入一个新元素。操作过程如下:首先判断栈顶指针是否已经指向存储空间的最后一个位置。如果是,则说明栈空间已满,不可能再进行入栈操作(这种情况称为栈“
19、上溢”错误),算法结束。然后将栈顶指针进一(即 top 加 1)。最后将新元素 x 插入栈顶指针指向的位置。(2)退栈运算 退栈运算是指取出栈顶元素并赋给一个指定的变量。操作过程如下:首先判断栈顶指针是否为 0。如果是,则说明栈空,不可能进行退栈操作(这种情况称为栈“下溢”错误),算法结束。然后将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量。最后将栈顶指针退一(即 top 减 1)。(3)读栈顶元素 读栈顶元素是指将栈顶元素赋给一个指定的变量。操作过程如下:首先判断栈顶指针是否为 0。如果是,则说明栈空,读不到栈顶元素,算法结束。然后将栈顶元素赋给指定的变量 y。必须注意,这个运算不删除栈
20、顶元素,只是将它的值赋给一个变量,因此,在这个运算中栈顶指针不会改变。二、队列及其基本运算 1什么是队列 在操作系统中,用一个线性表来组织管理用户程序的排队执行,原则是:初始时线性表为空;当有用户程序来到时,将该用户程序加入到线性表的末尾进行等待;当计算机系统执行完当前的用户程序后,就从线性表的头部取出一个用户程序执行。由这个例子可以看出,在这种线性表中,需要加入的元素总是插入到线性表的末尾,并且又总是从线性表的头部取出(删除)元素。这种线性表称为队列。定义:队列(Queue)是指允许在一端进行插入、而在另一端进行删除的线性表。*允许插入的一端称为队尾,通常用一个称为尾指针(Rear)的指针指
21、向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为排头(也称为队头),通常也用一个排头指针(Front)指向排头元素的前一个位置。*在队列这种数据结构中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。因此,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则。*在队列中,队尾指针 rear 与排头指针 front 共同反映了队列中元素动态变化的情况。图 1.11 具有 6 个元素的队列示意图 图 1.12 队列运算示意图 2循环队列及其运算 定义:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队
22、列循环使用。*在循环队列中,用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置,因此,从排头指针 front 指向的后一个位置直到队尾指针 rear 指向的位置之间所有的元素均为队列中的元素。*循环队列的初始状态为空,即 rear=front=m,如图 1.13 所示。图 1.13 循环队列存储空间示意图 循环队列主要有两种基本运算:入队运算与退队运算。每进行一次入队运算,队尾指针就进一。当队尾指针 rear=m+1 时,则置 rear=1。每进行一次退队运算,排头指针就进一。当排头指针 front=m+1 时,则置 front=1。图 1.14 循环
23、队列运算例 *当循环队列满时有 front=rear,而当循环队列空时也有 front=rear。即在循环队列中,当 front=rear 时,不能确定是队列满还是队列空。在实际使用循环队列时,为了能区分队列满还是队列空,通常还需增加一个标志 s,s 值的定义如下:由此可以得出队列空与队列满的条件如下:队列空的条件为 s=0;队列满的条件为 s=1 且 front=rear。假设循环队列的初始状态为空,即:s=0,且 front=rear=m。(1)入队运算 入队运算是指在循环队列的队尾加入一个新元素。操作过程如下:首先判断循环队列是否满。当循环队列非空(S=1)且队尾指针等于排头指针时,说明
24、循环队列已满,不能进行入队运算。这种情况称为“上溢”。此时算法结束。然后将队尾指针进一(即 rear=rear+1),并当 rear=m+1 时置 rear=1。最后将新元素 x 插入队尾指针指向的位置,并且置循环队列非空标志。(2)退队运算 退队运算是指在循环队列的排头位置退出一个元素并赋给指定的变量。操作过程如下:首先判断循环队列是否为空。当循环队列为空(s=0)时,不能进行退队运算。这种情况称为“下溢”。此时算法结束。然后将排头指针进一(即 front=front+1),并当 front=m+1 时置 front=1。再将排头指针指向的元素赋给指定的变量 最后判断退队后循环队列是否为空。
25、当 front=rear 时置循环队列空标志(即 s=0)。1.5 线性链表 一、线性链表的基本概念 *线性表的顺序存储结构具有简单、运算方便等优点,特别是对于小线性表或长度固定的线性表,采用顺序存储结构的优越性更为突出。*线性表的顺序存储结构存在的缺点:(1)在一般情况下,要在顺序存储的线性表中插入一个新元素或删除一个元素时,为了保证插入或删除后的线性表仍然为顺序存储,则在插入或删除过程中需要移动大量的数据元素。(2)当为一个线性表分配顺序存储空间后,如果出现线性表的存储空间已满,但还需要插入新的元素时,就会发生“上溢”错误。(3)线性表的顺序存储结构不便于对存储空间的动态分配。因此,对于大
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 年级 公共 基础知识 教材 完整版
限制150内