全国计算机二级公共基础知识ppt课件.ppt
《全国计算机二级公共基础知识ppt课件.ppt》由会员分享,可在线阅读,更多相关《全国计算机二级公共基础知识ppt课件.ppt(132页珍藏版)》请在三一办公上搜索。
1、第10章 公共基础知识,本章属于VFP程序设计扩展内容。主要学习程序算法设计理论思想、软件工程思想、数据库设计应用理论、程序设计方法等内容,以便把这些设计思想应用到VFP程序设计中去。,第10章 公共基础知识,本章知识点在笔试考试中的分析明细表(1),本章知识点在笔试考试中的分析明细表(2),10.1 数据结构与算法,1.算法 1)算法的基本概念 算法是对特定问题求解步骤的一种描述。它是指令的有限序列,其中每一条指令表示一个或多个操作。 算法的基本特征 :有穷性:指算法要在执行有穷步骤之后结束,且每一步都在有穷时间内完成。确定性:指算法中每条指令都有确切的含义,不存在二义性,且相同的输入只能得
2、到相同的输出。可行性:指算法中的操作都是可以通过实现的基本运算执行有限次来实现的。拥有足够的情报:一般地,当为算法所提供的情报足够多时,算法才是有效的。,10.1 数据结构与算法,1.算法 1)算法的基本概念 算法的基本要素对数据对象的运算和操作指令系统,是指一个计算机系统能执行的所有指令的集合。一个算法即为按照题目要求从指令系统中选择合适的指令组成的一组指令序列。因此算法就是计算机能进行的操作所组成的指令序列。不同的计算机系统, 指令系统是有差异的, 但一般的计算机系统中都包括一下4类基本运算:算术运算、逻辑运算、关系运算和数据传输。 算法的控制结构 算法的控制结构是指算法中各操作之间进行的
3、顺序。算法的效果不仅取决于所选用的操作指令,还与各操作之间的进行顺序有关。基本的控制结构包括顺序结构、选择结构和循环结构等。,10.1 数据结构与算法,1.算法 1)算法的基本概念 算法设计的基本方法算法设计的基本方法有列举法、归纳法、递推法、递归法、减半递推技术和回溯法等。不同的方法间存在着联系,在实际应用中,不同方法通常会交叉使用。,10.1 数据结构与算法,2)算法复杂度算法的时间复杂度:是指执行算法所需要的计算工作量. 一般地,算法的计算工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即: 算法的工作量 f(n)(其中n是问题规模)例如,两个NN矩阵
4、相乘所需要的基本预算次数为n3 ,即计算量为n3 ,也就是时间复杂度为n3 。 另外,在同一问题规模下,若算法执行所需的基本运算次数取决于某一特定输入数据时,我们可以用平均性态分析和最坏情况分析两种方法来分析算法的工作量。顾名思义,平均性态分析即输入所有可能的平均值,相应的时间复杂度为算法的平均时间复杂度,最坏情况分析则是以最坏的情况估算算法执行时间的一个上界。一般情况下,后者更为常用。,10.1 数据结构与算法,2)算法的空间复杂度 算法的空间复杂度是指,执行此算法期间所需要占用的内存空间。包括3部分:算法程序所占的空间;输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。 实际
5、应用中,为了减小算法所占用的存储空间,通常采用压缩存储技术,用于减小不必要的额外空间。,10.1 数据结构与算法,2.数据结构的基本概念1)什么是数据结构 数据结构是指相互有关联的数据元素的集合。而数据元素具有广泛含义,一般来说,现实世界中客观存在的一切个体都可以是数据元素。它可以是一个数或一个字符,也可以是一个具体的事物,或者其他更复杂的信息。 (1)数据的逻辑结构 所谓数据的逻辑结构,是指反映数据元素之间逻辑关系(即前后件关系)的逻辑结构。它包括数据元素的信息和数据元素之间的前后关系两个要素。,10.1 数据结构与算法,2.数据结构的基本概念1)什么是数据结构(2)数据的存储结构 所谓数据
6、的存储结构,又称为数据的物理结构,是指数据的逻辑结构在计算机存储空间中的存放方式。 因为数据元素在计算机中的存放的位置很可能与逻辑关系不一样,所以在存储数据时,不仅要存放数据的信息,还要存放数据间的前后件的信息。只有这样才能更好表示计算机存储空间中数据之间的逻辑关系。 数据结构的存储方式包括顺序存储、链式存储、索引存储和散列存储等方法。而采用不同的存储结构,其数据处理的效率是不同的,所以我们在进行数据处理时,选择合适的存储结构就显得十分重要。,10.1 数据结构与算法,2.数据结构的基本概念2)数据结构的图形表示 前后件关系是数据元素之间最基本的关系。所谓前后件关系即每一个二元组,都可以用图形
7、来表示。用中间标有元素值的方框表示数据元素,一般称为数据结点,简称结点。对于每一个二元组,用一条有向线段从前件指向后件。例如,一年四季的数据结构可以用图1所示的图形来表示。,10.1 数据结构与算法,2.数据结构的基本概念2)数据结构的图形表示 又例如数据结构的知识体系可以用下图所示的图形来表示。,10.1 数据结构与算法,2.数据结构的基本概念3)线性结构与非线性结构 根据数据结构中各数据元素之间前后关系的复杂程度,一般可将数据结构分为两大类型:线性结构和非线性结构。若一非空的数据结构有且只有一个根结点,并且每个结点最多有一个直接前驱后直接后继,则称该数据结构为线性结构,也称线性表。 不满足
8、上述条件的数据结构则称为非线性结构。 由上我们可以判断,图一为线性结构,图二为非线性结构。,10.1 数据结构与算法,3.线性表及其顺序存储结构1)线性表的基本概念 在数据结构中,线性表是最简单也是最常用的一种数据结构。 线性表是由n(n0) 数据结构元素x1,x2,x3,xn 组成的一个有限序列。除了表中的第一个元素外,有且只有一个直接前驱;除了最后一个元素外,有且只有一个直接前驱。将线性表表示为(x1,x2,x3,xn),其中xi (i=1,2,n)是线性表的数据元素,也称为为线性表的一个结点。线性表中的数元素必须具有相同的属性,即属于同种数据对象。 比如:字母表(A,B,C,Z)就是一个
9、长度为26的线性表 比如:矩阵可以看做一个比较复杂线性表,在矩阵中,既可以把每一行看成一个数据元素,也可以把每一列看成一个数据元素。,10.1 数据结构与算法,3.线性表及其顺序存储结构2)线性表的顺序存储结构将线性表中的元素在计算机中一段相邻的存储区域中连续存储,称为线性表的顺序存储。线性表的顺序存储结构具有以下两个基本特点:所有元素所占的存储空间必须是连续的;所有元素在存储空间的位置是按逻辑顺序存放的。由其基本特点我们可以看到,线性表中元素之间逻辑上的相邻关系即元素在计算机内物理位置上的相邻关系。所以只要确定了首地址,线性表内所有元素的地址都可以方便地查找出来。,10.1 数据结构与算法,
10、插入4,(a)插入前线性表n=5,(b)插入元素4后线性表n=6,图4 线性表的顺序存储结构插入前后的状况,3.线性表及其顺序存储结构3)线性表的插入运算在对线性表的插入操作时,若在第i个元素之前插入一个新元素,完成插入操作主要有以下个步骤:原来第n个结点至第i结点依次往后移一个位置;把新结点放在第i个位置上;线性表的结点数加1。如图4所示:,10.1 数据结构与算法,3.线性表及其顺序存储结构3)线性表的插入运算当在线性表尾进行插入运算时,则只需在表的末尾增加一个元素即可,不需要移动线性表中的元素。当在线性表头位置插入新的元素,则需要移动表中所有的元素。一般地,线性表会事先开辟出一个大于线性
11、表长度的空间,但当多次插入运算后,可能出现在存储空间已满的情况下仍继续进行插入运算,此时将会产生错误,此类错误称为“溢出”。,10.1 数据结构与算法,3.线性表及其顺序存储结构4)线性表的删除运算在对线性表的删除操作时,若在第i元素之前插入一个新元素,完成插入操作主要有以下个步骤:把第i元素之后(不包括第i个元素) 的-i个元素依次前移一个位置;线性表的结点数减1。当删除运算在线性表尾进行时,即删除第n个元素,不需要移动线性表中的元素。当要删除第1个元素时,则需要移动表中所有的元素。,10.1 数据结构与算法,4.栈和队列1) 栈及其基本运算 (1)栈的基本概念 栈,实际上也是一种线性表,只
12、不过是一种特殊的线性表。其特殊性体现在,它的插入和删除运算都只在线性表的一端进行,而另一端是封闭的,不进行任何操作。在栈中,允许进行插入删除操作的一端称为栈顶,另一端则称为栈底。当栈中没有元素时称为空栈。由于其操作的特殊性,栈也被称为“先进后出”表或“后进先出”表。,10.1 数据结构与算法,(2)栈的特点栈底元素总是最早被插入的元素,最晚被删除的元素;栈顶元素总是最后被插入的元素,最早被删除的元素;栈具有记忆作用;顺序栈的插入和删除运算都不需要移动表中其他的数据元素;栈顶指针动态反映了栈中元素的变化情况。,10.1 数据结构与算法,(3)栈的顺序存储及其运算 栈的基本运算有3种: 入栈运算:
13、即栈的插入,在栈顶位置插入一个新数据。出栈运算:即栈的删除,就是取出栈顶元素赋予指定变量。读栈顶元素:即将栈顶元素(即栈顶指针top指向的元素)的值赋给某个变量。,10.1 数据结构与算法,4.栈和队列2)队列及其基本运算 (1)队列的基本概念队列是同栈完全相反的线性结构,它是允许在一端进行插入,而在另一端进行删除的线性表。允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素;允许删除的一端称为队头,通常用一个称为头指针(front)的指针指向头元素的前一个位置。队列又称为“先进先出”的线性表。,10.1 数据结构与算法,(2)循环队列及其运算循环队列,顾名思义,就是将队
14、列存储空间的最后一个位置绕到第一个位置, 形成逻辑上的环状空间,线性结构供队列循环使用。在循环队列中,用尾指针(rear)指向队列的尾元素,用头指针(front)指向头元素的前一个位置。所以,我们可以知道从头指针(front) 所指向的后一个位置直到尾指针(rear)指向的位置之间所有的元素均为队列中的元素。,10.1 数据结构与算法,由此判断队列空和队列满这两种情况:当S = 0时,循环队列为空;当S = 1时,且front = rear时,循环队列满。,(2)循环队列及其运算当 rear front时,循环队列的状态有两种:可能是队列满,也可能是队列空。为了区分这两种情况,我们通常增加一个
15、标志量S,S值的定义如下:,10.1 数据结构与算法,2)循环队列及其运算循环队列的基本运算主要有两种:入队运算入队运算是指在循环队列的队尾加入一个新元素。首先队尾指针进1(即rear=rear1),然后在rear指针指向的位置,插入新元素。当S = 1时,且front = rear时,循环队列满。此时进行入队运算,会发生“上溢”错误。 出队运算出队运算是指在循环队列的排头位置退出一个元素,并赋给指定的变量。首先,头指针进1(即front=front1),然后删除front指针指向的位置上的元素。当S = 0时,循环队列为空, 此时进行出队运算,会发生“下溢”错误。,10.1 数据结构与算法,
16、5.线性链表前面主要介绍了线性表的顺序存储结构及其基本运算。线性表的顺序存储结构的特点是简单、运算方便,对于小线性表或长度固定的线性表,采用顺序存储结构的优越性显而易见。但是线性表的顺序存储结构在数据量大,运算量大的时候就显得不方便,运算效率不高。 此时,我们就要用到链接存储方式。前面在介绍一般的线性表以及栈和队列时,主要介绍了相应的顺序存储,下面我们将讲解线性表的链接存储。,10.1 数据结构与算法,5.线性链表1)线性链表的基本概念 线性表的链式存储结构称为线性链表。线性表链式存储结构的特点是用一组不连续的存储单元存储线性表中的各个元素。 为了存储线性表中的每一个元素,一方面要存储数据元素
17、的值,另一方面要存储各数元素之间的前后关系。为此,在链式存储方式中,每个结点由两部分组成:一部分称为数据域,用于存放数据元素的值;另一部分称为指针域,用于存放下一个数据元素的地址。链式存储结构既可以表示线性结构,也可以表示非线性结构。 线性链表,就是指线性表的链式存储结构,简称链表。 由于这种链表中,每个结点只有一个指针域,故又称为单链表。,10.1 数据结构与算法,5.线性链表1)线性链表的基本概念栈和队列也可以采用链式存储结构表示,将其组织成一个单链表。这种数据结构称为带链的栈和带链的队列。栈和队列中的元素对应链表中的一个结点。 顺序表和链表的优缺点比较可见下表:,10.1 数据结构与算法
18、,5.线性链表2)线性链表的基本运算对线性链表进行的运算主要包括查找、插入、删除、合并、分解、逆转、复制和排序。其中线性链表的查找、插入和删除运算是学习的重点。 (1)在线性链表中查找指定元素在链表中查找指定元素必须从队头指针出发,沿着指针域Next逐个结点搜索,直到找到指定元素或链表尾部为止,而非像顺序表那样,知道了首地址后去计算出任意元素的存储。因此,线性链表不是随机存储结构。在链表中,扫描到等于指定元素值的结点时,返回该结点的位置,如果链表中没有元素的值等于指定元素,则扫描完所有元素后,返回空。,10.1 数据结构与算法,(2)线性链表的插入线性链表的插入是指在链式存储结构下的线性表中插
19、入一个新元素。要在线性链表中数据域为M的结点之前插入一个新元素n,首先要给n分配一个新的结点,然后在线性链表中查找数据域为M的结点,将其前件的存储序号存放在变量q中,将新结点p的指针域内容设置为指向数据域为M的结点,最后将结点q的指针域内容改为指向新结点p。,10.1 数据结构与算法,5.线性链表2)线性链表的基本运算(3)线性链表的删除线性链表的删除是指在链式存储结构下的线性表中删除包含指定元素的结点。在线性链表中删除数据域为M的结点,首先在线性链表中查找包含元素M的结点,将该结点的存储序号存放在p中,然后把p结点的前指针放在变量q中,将q结点的指针修改为指向p结点的指针所指向的结点,最后把
20、数据域为M的结点删除。,10.1 数据结构与算法,5.线性链表3)循环链表及其基本运算(1)循环链表的定义在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,将最后一个结点的指针域的值由null改为指向表头结点,这样的链表称为循环链表。循环链表中,所有结点的指针构成了一个环状链。,10.1 数据结构与算法,(2)循环链表与单链表的比较单链表的访问方法是顺序访问,即从其中的某一结点出发,可以访问它的直接后继而无法访问它的直接前驱。而且空表与非空表的操作也不一样,对于空表和非空表的第一结点的处理都必须单独考虑。而在循环链表中,只要得到表中任一结点的位置,就可以从它出发访问到全表所有的结点
21、。且由于表头结点是循环链表所固有的结点,因此即使在表中没有数据元素的情况下,表中也至少会有一个结点存在,从而使空表和非空表的运算得到统一。,10.1 数据结构与算法,6.树和二叉树1)树的基本概念 树是一种简单的非线性结构,它是以分支关系定义的层次结构。它和自然界的树结构形式很类似,所以我们称之为树。树结构在客观世界中是大量存在的。例如,物种分类(门、纲、目、科、属、种等),组织机构(处、科、室等),行政区(国家、省、市、区),这些具有层次关系的数据,都可以用树这种数据结构来描述。在用图形表示数据结构中元素之间的前后关系时,一般使用有向箭头,如上文中图1和图2所示,但在树形结构中,一般去掉箭头
22、也不会引起歧义,常常使用无向线段代表数据元素之间的逻辑关系。,10.1 数据结构与算法,6.树和二叉树1)树的基本概念父结点:结点A是树的根结点。子结点和叶子结点:结点D,H,I,F,G均为叶子结点。度:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。例如,在图9中,根结点A和结点E的度为2,结点B的度为3,结点C的度为1,叶子结点D,H,I,F,G的度为0。所以,该树的度为3。,深度:定义一棵树的根结点所在的层次为1,其他结点所在的层次等于它的父结点所在的层次加1。树的最大层次称为树的深度。例如,在图9中,根结点A在第1层,结点B,C在第2层,结点D,E,F
23、,G在第3层,结点H,I在第4层。该树的深度为4。子树:在树中,以某结点的一个子结点为根构成的树称为该结点的一棵子树。,10.1 数据结构与算法,6.树和二叉树2)二叉树及其基本性质 (1)二叉树的定义 二叉树是一个有限的结点集合,该集合或者为空,或者由一个根结点及其两棵互不相交的左、右二叉子树所组成。二叉树具有以下特点:二叉树可以为空,空的二叉树没有结点,非空二叉树有且只有一个根结点;每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树;二叉树的子树有左右之分,其次序不能任意颠倒。,10.1 数据结构与算法,(2)满二叉树和完全二叉树满二叉树指除最后一层外,每一层上的所有结点都有两个子
24、结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。满二叉树与完全二叉树的关系:满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。,10.1 数据结构与算法,(3)二叉树的主要性质一棵非空二叉树的第k层上最多有2k-1个结点(k 1);深度为m的满二叉树中有2m-1个结点;对任何一棵二叉树而言,度为0的结点(即叶子结点)总是比度为的结点多一个;具有n个结点的完全二叉树的深度k为log2n1,其中log2n表示取log2n的整数部分。,10.1 数据结构与算法,注意:对于满二叉树与完全二叉树可以按层次进行顺序存储。,6.树和二叉树3)二叉
25、树的存储结构在计算机中,二叉树通常采用链式存储结构。用于存储二叉树中各元素的存储结点由数据域和指针域组成。由于每个元素可以有两个后件(即两个子结点),所以用于存储二叉树的存储结点的指针域有两个:一个指向该结点的左子结点的存储地址,称为左指针域;另一个指向该结点的右子结点的存储地址,称为右指针域。因此,二叉树的链式存储结构也称为二叉链表。二叉树的一个存储结点如图10所示:,10.1 数据结构与算法,6.树和二叉树4)二叉树的遍历二叉树的遍历是指不重复地访问二叉树中的所有结点。二叉树的遍历有前序遍历、 中序遍历和后序遍历等。前序遍序(DLR)首先访问根结点, 然后遍历左子树, 最后遍历右子树。中序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机 二级 公共 基础知识 ppt 课件
链接地址:https://www.31ppt.com/p-1409948.html