二级公共基础讲义
二级公共基础知识教学课件
h
22
3.2.2 结构化分析方法
• 数据流图:基本图形元素
加工
数据流
存储文件
源、潭
h
23
3.2.2 结构化分析方法
• 数据流图:分层数据流图
h
24
3.2.2 结构化分析方法
• 2.结构化分析的常用工具
– 数据字典
• 结构化分析方法的核心 • 对数据流图中出现的被命名的图形元素的确切解释
判定树
– 判定树 – 判定表
h
2
3.1 软件工程基本概念软件特点
• 1.软件的定义和组成
– 定义:
• 计算机软件(Software)是计算机系统中与硬件相 互依赖的另一部分。
– 组成:
• 程序 • 数据 • 文档
– 国标(GB)定义
• 与计算机系统的操作有关的计算机程序、规程、规 则,以及可能有的文件、文档及数据。
• 运行维护阶段
– 使用,不断维护
h
12
3.1.4 软件工程的目标与原则
• 1.软件工程的目标
– 成功的项目:
• 成本 • 功能 • 移植 • 维护费用 • 按时 • 及时交付
– 目标:
• 在给定成本、进度的前提下,开发出具有有效性、可靠性、可 理解性、可维护性、可重用性、可适应性、可移植性、可追踪 性和可互操作性且满足用户需求的产品
h
5
3.1.1 软件定义与软件特点(续)
• 3.软件的分类
– 应用软件 – 系统软件
• 操作系统 • 数据库管理系统 • 设备驱动程序 • ……
– 支撑软件
h
6
3.1.2 软件危机与软件工程
• 1.软件危机
– 软件工程源自于软件危机 – 主要表现:
二级公共基础知识精品PPT课件
1 算法★ ★ ★ ★
算法的定义:为解决某个特定问题而采取的确 定且有限的步骤的一种描述,简单地说,就是解 决问题的操作步骤
考点1:算法的特点 (1) 确定性(无歧义) (2) 有穷性(操作步骤是有限的) (3) 有效性(可行性,能够得出满意的结果) (4) 输入:有0个或多个输入(拥有足够的情报) (5) 输出:有一个或多个输出
软件/计算机学院
1 算法★ ★ ★ ★
例1:下列叙述中正确的是: B A、算法的效率只与问题的规模有关,而
与数据的存储结构无关 B、算法的时间复杂度是指执行算法所需
要的计算工作量 C、数据的逻辑结构与存储结构是一一对
应的 D、算法的时间复杂度与空间复杂度一定
相关
软件/计算机学院
1 算法★ ★ ★ ★
软件/计算机学院
1 算法★ ★ ★ ★
(2) 算法的空间复杂度:描述算法的存储 空间要求,记作S(n)=O(g(n))
输入数据所占的存储空间; 程序本身所占的存储空间; 算法执行过程中所需要的额外空间(包括
算法程序执行过程中的工作单元,以及某 种数据结构所需要的附加存储空间) 为了降低算法的空间复杂度,主要减少输 入数据所占的存储空间以及额外空间,通 常采用压缩存储技术
例2:下列叙述中正确的是: D A、一个算法的空间复杂度大,则其时间
复杂度也必定大 B、一个算法的空间复杂度大,则其时间
复杂度必定小 C、一个算法的时间复杂度越大,则其空
间复杂度必定小 D、以上三种说法均不对
软件/计算机学院
2数据结构基础★ ★ ★
定义:反映数据元素之间关系的数据元素 集合的表示。
软件/计算机学院
考试内容
4 数据库设计基础 数据库的基本概念:数据库,数据库管理
(面授版)全国计算机等级考试二级公共基础知识辅导讲义
全国计算机等级考试二级——公共基础知识教程(2011年版)作者:王欣前言全国计算机等级考试(National Computer Rank Examination,简称NCRE)是经原国家教育委员会(现教育部)批准,由教育部考试中心主办,面向社会,用于考察应试人员计算机应用知识与技能的全国性计算机水平考试体系。
全国计算机等级考试设四个等级。
它不以评价教学为目的,考核内容不是按照学校要求设定,而是根据社会不同部门应用计算机的不同程度和需要、国内计算机技术的发展情况以及中国计算机教育、教学和普及的现状而确定的;它以应用能力为主,划分等级,分别考核,为人员择业、人才流动提供其计算机应用知识与能力水平的证明。
全国计算机等级考试二级是目前参考人数最多的一个等级。
二级考试设置了多个考试科目:C语言程序设计、Visual Basic语言程序设计、Visual FoxPro数据库程序设计、Access数据库程序设计、C++语言程序设计、Java语言程序设计、Delphi语言程序设计等。
考试形式为“理论+上机”,必须理论考试和上机考试均合格才认作通过考试。
不管考生选考二级哪个科目,理论考试中都要考公共基础知识,且试题均一样,占30分,在试卷中为选择题的1-10题,填空题的1-5题。
公共基础知识多数考题考察的都是基本原理与基本概念,要求考生实记。
目前在网络上流行的《全国计算机等级考试——二级公共基础知识辅导讲义》为我在2008年编写的,本次改版根据最新的考试大纲,结合教育部考试中心所编的教程和近年来的数份真题,重新对某些知识点进行了归纳,全面符合最新的考试命题特点。
本书分为四章,排序按照教育部考试中心所编的教程设定,第一章为“数据结构与算法”;第二章为“程序设计基础”;第三章为“软件工程基础”;第四章为“数据库设计基础”。
考生只要把本书中的要点掌握,并做几份近几年的公共基础知识真题后,应对公共基础知识应该没有太大问题。
二级公共基础经典课件共139页
常见的存储结构:
顺序存储结构 链式存储结构 索引存储结构 散列存储结构
典型例题
(1)数据结构中,与所使用的计算机无关的是数据的
一.算法的基本概念
何估算算法的时间复杂度? 任何一个算法都是由一个“控制结构”
和若干“原操作”组成的,因此一个算法的 执行时间可以看成是所有原操作的执行时间 之和
∑( 原操作(i)的执行次数×原操作(i)的执 行时间 ) For i=1 to 100 for j=1 to 100
s=i*j 。 算法时间复杂度为:O(n2)
1)数据集合中各数据元素之间的逻辑关系,即数据 的逻辑结构。
2)在对数据进行处理时,各数据元素在计算机中的存 储关系,即数据的存储结构。
3)对各种数据结构进行的运算。
数据结构简单实例
Student { name; Sno; class; Rscore; }
Student zhangsan { zhangsan; s20081001; 计算机1班; 515; }
Student lisi { lisi; s20081001; 计算机1班; 501; }
数据的逻辑结构
数据逻辑结构是对数据 元素之间存在的逻辑关 系的描述(本身固有 的),它可以用一个数 据元素的集合和定义在 此集合上的若干关系表 示。
与数据在计算机中的存 储位置无关,是独立于 计算机的。
数பைடு நூலகம்的存储结构
A)存储结构
B)物理结构
C)逻辑结构
D)物理和存储结构
2019年计算机二级公共基础辅导讲义:栈和队列
2019年计算机二级公共基础辅导讲义:栈和队列
1.4 栈和队列
1、栈及其基本运算
栈是限定在一端实行插入与删除运算的线性表。
在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的
另一端称为栈底。
栈顶元素总是最后被插入的元素,栈底元素总是最
先被插入的元素。
即栈是按照“先进后出”或“后进先出”的原则组
织数据的。
栈具有记忆作用。
栈的基本运算:1)插入元素称为入栈运算;2)删除元素称为退
栈运算;3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针
无变化。
栈的存储方式和线性表类似,也有两种,即顺序栈和链式栈。
2、队列及其基本运算
队列是指允许在一端(队尾)进入插入,而在另一端(队头)实
行删除的线性表。
尾指针(Rear)指向队尾元素,头指针(front)指
向排头元素的前一个位置(队头)。
队列是“先进先出”或“后进后出”的线性表。
队列运算包括:1)入队运算:从队尾插入一个元素;2)退队运算:从队头删除一个元素。
循环队列及其运算:所谓循环队列,就是将队列存储空间的最后
一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。
在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置,所以,从头指针front指向的后一
个位置直到队尾指针rear指向的位置之间,所有的元素均为队列中的元素。
*:循环队列中元素的个数=rear-front。
二级公共基础知识重点讲义资料
二级公共基础知识总结请大家认真仔细的背诵该资料,至少要看三遍,划了横线的和 方框的都是重点!第一章 数据结构与算法1.1 算法算法:是指解题方案的准确而完整的描述。
算法不等于程序,也不等计算机方法,程序的编制 不可能优于算法的设计。
算法的特征包括:(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义 性;(3)有穷性,算法必须能在有限的时间内做完,包括合理的执行时间的含义;(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
基本运算包括:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:顺序结构、选择结构、循环结构。
算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。
1.2 数据结构的基本基本概念数据结构研究的三个方面:(1)数据集合中各数据元素之间所固有的逻辑关系,(2)在对数据进行处理时,各数据元素在计算机中的(3)对各种数据结构进行的运算。
数据结构是指相互有关联的数据元素的集合。
数据的存储结构有顺序、链接、索引等。
线性结构条件:(1)有 且只有一个根结点;(2)每 一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1.3 线性表及其顺序存储结构线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是 线性的。
在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。
线性表的顺序存储结构具有以下两个基本特点:(1)线 性表中所有元素的所占的存储空间是连续的;(2)线 性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
1.4 栈和队列栈是限定在一端进行插入与删除的线性表。
1、先进后出 FILO;1、支持子程序调用;2、具有记忆功能;3、可以不用顺序存放数据;4、只能够在 top 首部进行操作,bottom 是绝对不动的;1、Rear 指针指向队尾,front 指针指向队头。
国二《公共基础知识》--修改后讲稿
第一章数据结构与算法1.1算法1.1.1算法算法:是指解题方案的准确而完整的描述。
通常不用计算机程序来直接描述算法,而是用别的描述工具,如程序流程图,专门的算法描述语言,甚至用自然语言。
1.算法的基本特征(1)可行性:算法总是在一个特定的计算工具上执行的,因此算法往往受到计算工具的限制,使执行结果产生偏差。
所以在设计一个算法时,必须要考虑它的可行性,否则不会得到满意的结果。
(2)确定性:指算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。
(3)有穷性:是指算法必须在有限的时间内做完。
即算法必须能在执行有限个步骤之后终止。
例如计算无穷级数的算法,只能是有穷的。
满足精度要求即可结束。
(4)拥有足够的情报:一个算法是否有效,还取决于为算法所提供的情报是否足够。
即不同的输入将会有不同的结果输出。
当输入不够或输入错误时,算法本身也就无法执行或导致执行错误。
综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
2.算法的基本要素主要有两种:一是对数据对象的运算和操作,二是算法的控制结构(1)算法中对数据的运算和操作有四类:1)算术运算:主要是加、减、乘、除等2)逻辑运算:主要是与、或、非等3)关系运算:主要是大于、小于、等于、不等于等4)数据传输:主要是赋值、输入、输出等(2)算法的控制结构:顺序结构、选择结构、循环结构一个算法的功能不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。
算法中各操作的执行顺序称为算法的控制结构。
算法的控制结构给出了算法的基本框架。
包括三种:顺序结构、选择结构、循环结构。
一个算法可以用这三种结构组合而成。
例如:计算1+2+3+…+1001.1.2算法的复杂度包括时间复杂度和空间复杂度。
1.算法的时间复杂度是指执行算法所需要的计算工作量。
用基本运算次数来度量。
在分析算法工作量时,必须对问题的规模进行度量。
二级公共基础知识(讲解版)
二级公共基础知识第一部分数据结构(5-6个题目,占10分)*1.所谓算法是指解题方案的准确而完整的描述。
严格来说,一个算法必须具有以下五个主要特征:⏹报)2.算法的组成要素⏹算法中对数据的运算和操作及算法的控制结构3.算法设计基本方法⏹列举法归纳法递推递归减半递推回溯法*4.算法的复杂度可分为时间复杂度和空间复杂度,是衡量算法优劣的量度。
(1)算法的时间复杂度:算法的时间复杂度是指执行算法所需要的工作量。
一般情况下,算法的时间复杂度为算法中的基本操作重复执行的次数。
是问题规模n的某个函数f(n)。
(2)算法的空间复杂度:算法的空间复杂度是指执行这个算法所需要的内存空间。
5.数据结构的定义是指相互有关联的数据元素的集合。
(一定要注意是数据元素的集合,不是数据的集合)*6. 数据结构主要研究三个方面的问题:1) 逻辑结构是各数据元素之间的逻辑关系。
它与在计算机中的存储位置无关,是独立于计算机的。
2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构。
3)对各种数据结构进行的运算。
7.常见的存储结构:⏹顺序存储结构链式存储结构索引存储结构散列存储结构⏹一般分为:线性存储和非线性存储8.线性表的顺序存储结构用一组地址连续的存储单元依次存放线性表中的数据元素,即以“存储位置相邻”表示“存储,表中第一个元素的存储位置作称作线性表的基地址。
所有数据元素的存储位置均可由第一个数据元素的存储位置得到ADR(ai) = ADR(a1) + (i-1)×C↑↑基地址一个数据元素所占存储量9. 线性表的插入和删除运算最坏的时间复杂度为O(n-1),最好为O(o).10.栈是限定仅在表的一端进行插入和删除操作的线性表。
允许插入和删除的一端称为栈顶,另一端称为栈底。
栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入,也是最后被删除的元素。
栈是一种后进先出的线性表。
通常用指针top指示栈顶位置,用指针bottom指示栈底位置。
【5A版】全国计算机等级考试二级公共基础知识辅导讲义
目录全国计算机等级考试——二级公共基础知识辅导讲义 (1)第一章数据结构与算法 (1)第二章程序设计基础 (7)第三章软件工程基础 (9)第四章数据库设计基础 (16)任课教师:田密作者介绍:田密,男,延安职业技术学院计算机等级考试二级辅导主讲教师。
联系方式:Email:tianmizr@QQ:6009265欢迎大家多多与我交流,提出你们对课程的意见和建议!第一章数据结构与算法1.1算法1步骤的一种描述。
G:算法不等于程序,也不等于计算方法。
程序的编制不可能优于算法的设计。
2、算法的基本特征(1)可行性。
针对实际问题而设计的算法,执行后能够得到满意的结果。
(2)确定性。
每一条指令的含义明确,无二义性。
并且在任何条件下,算法只有唯一的一条执行路径,即相同的输入只能得出相同的输出。
(3)有穷性。
算法必须在有限的时间内完成。
有两重含义,一是算法中的操作步骤为有限个,二是每个步骤都能在有限时间内完成。
(4)拥有足够的情报。
算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。
因此,一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。
当输入不够或输入错误时,算法将无法执行或执行有错。
一般说来,当算法拥有足够的情报时,此算法才是有效的;而当提供的情报不够时,算法可能无效。
G:综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
3、算法复杂度主要包括时间复杂度和空间复杂度。
(1)算法时间复杂度是指执行算法所需要的计算工作量,可以用执行算法的过程中所需基本运算的执行次数来度量。
(21.2数据结构的基本概念12、数据结构主要研究和讨论以下三个方面的问题:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构。
数据的逻辑结构包含:1)表示数据元素的信息;2)表示各数据元素之间的前后件关系。
全国计算机等级考试《二级公共基础知识》【教材精讲+真题解析】讲义与视频课程【12小时高清视频】
递推算法在数值计算中是极为常见的。但是,对于数值型的递推算法必须要注意数值计算的稳定性问题。
4.递归
(1)基本思想
为了降低问题的复杂程度,将问题逐层分解,最后归结为一些最简单的问题,这种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合。
表示家庭成员的各成员名:父亲、儿子、女儿
数据处理:对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。
【注意】作为某种处理,其中的数据元素一般具有某种共同特征,一般情况下,在具有相同特征的数据元素集合中,各个数据元素之间存在有某种关系,这种关系反映了该集合中的数据元素所固有的一种结构。
【例4】一年四季的数据结构可以表示成
B=(D,R)
D={春,夏,秋,冬}
R={(春,夏),(夏,秋),(秋,冬)}
2.数据的存储结构
定义:数据的逻辑结构在计算机存储空间中的存放形式。
【注意】
①各数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的,而且一般也不可能相同。
②在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。
(2)特点
在工程上,有些实际问题很难归纳出一组简单的递推公式或直观的求解步骤,并且也不能进行无限的列举。对于这类问题,一种有效的方法是“试”。
三、算法复杂度
主要包括时间复杂度和空间复杂度。
1.算法的时间复杂度
(1)定义
执行算法所需要的计算工作量。
(2)衡量标准
通常用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。算法所执行的基本运算次数还与问题的规模有关。
全国计算机等级考试二级公共基础知识讲义
全国计算机等级考试——二级公共基础知识辅导讲义目录第一章数据结构与算法 (1)1.1 算法 (1)1。
2 数据结构的基本概念 (1)1。
3 线性表及其顺序存储结构 (2)1.4 栈和队列 (2)1。
5 线性链表 (3)1.6 树与二叉树 (4)1.7 查找技术 (5)1。
8 排序技术 (6)本章应考点拨 (6)第二章程序设计基础 (7)2。
1 程序设计风格 (7)2。
2 结构化程序设计(面向过程的程序设计方法) (7)2。
3 面向对象的程序设计 (8)本章应考点拨 (8)第三章软件工程基础 (9)3。
1 软件工程基本概念 (9)3。
2 结构化分析方法 (10)3。
3 结构化设计方法 (11)3.4 软件测试 (12)3。
5 程序的调试 (14)本章应考点拨 (15)第四章数据库设计基础 (16)4.1 数据库系统的基本概念 (16)4。
2 数据模型 (18)4。
3 关系代数 (19)4.4 数据库设计方法和步骤 (20)本章应考点拨 (20)第一章数据结构与算法11描述。
*:算法不等于程序,也不等于计算方法。
程序的编制不可能优于算法的设计。
2、算法的基本特征(1)可行性.针对实际问题而设计的算法,执行后能够得到满意的结果.(2)确定性。
每一条指令的含义明确,无二义性。
并且在任何条件下,算法只有唯一的一条执行路径,即相同的输入只能得出相同的输出.(3)有穷性。
算法必须在有限的时间内完成。
有两重含义,一是算法中的操作步骤为有限个,二是每个步骤都能在有限时间内完成。
(4)拥有足够的情报。
算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。
因此,一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。
当输入不够或输入错误时,算法将无法执行或执行有错。
一般说来,当算法拥有足够的情报时,此算法才是有效的;而当提供的情报不够时,算法可能无效。
企业培训-二级公共基础知识培训课件 精品
A
B
C
满二叉树
D
EF
最大层的结点 均向左靠齐
完全二叉树
二叉树的基本性质
性质5 如果对一棵有 n 个结点的完全二叉树(其深度为 [log2n] +1)的结点按层序(从第1层到第[log2n] +1 层,每 层从左到右)从1起开始编号,则对任一编号为 i 的结点 (1≤i≤n),则:
算法的复杂度
如何估算算法的时间复杂度? 任何一个算法都是由一个“控制结构”和若干“原操作”
组成的,因此一个算法的执行时间可以看成是所有原操作的执 行时间之和
∑( 原操作(i)的执行次数×原操作(i)的执行时间 ) 则算法的执行时间与所有原操作的执行次数之和成正比。 从算法中选取一种对于所研究的问题来说是基本操作的原操作, 以该基本操作在算法中重复执行的次数作为算法时间复杂度的 依据。这种衡量效率的办法所得出的不是时间量,而是一种增 长趋势的量度。它与软硬件环境无关,只暴露算法本身执行效 率的优劣。
通常用指针top指示栈顶位置,用指针bottom指示栈底位置。
入栈
出栈
栈顶 top
an
……
a2
栈底 bottom
a1
栈的顺序存储及运算
用一维数组S(1:m)作为栈的顺序存储空间,m 为栈的最大容量。top=0表示栈为空,top=m 表示栈满。
栈的操作
入栈:在栈顶位置插入一个新元素,栈顶指针top加 1。
队列是一种先进先出的数据结构。 向队尾插入一个元素的操作称为入队,从队头删除一个元素
的操作称为退队。
退队
A
B
C
D
E
F
Front
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章数据结构与算法1.1 算法的复杂度1. 算法的基本概念利用计算机算法为计算机解题的过程实际上是在实施某种算法。
(1)算法的基本特征算法一般具有4个基本特征:可行性、确定性、有穷性、拥有足够的情报。
(2)算法的基本运算和操作算法的基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。
(3)算法的3种基本控制结构算法的3种基本控制结构是:顺序结构、选择结构、循环结构。
(4)算法基本设计方法算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。
(5)指令系统所谓指令系统指的是一个计算机系统能执行的所有指令的集合。
2. 算法复杂度算法复杂度包括时间复杂度和空间复杂度。
注意两者的区别,无混淆,见表1-1。
1.2 数据结构1.2.1 逻辑结构和存储结构1. 数据结构的基本概念(1)数据结构指相互有关联的数据元素的集合。
(2)数据结构研究的3个方面①数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;②在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;③对各种数据结构进行的运算。
2. 逻辑结构数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。
数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。
一个数据结构可以表示成:B=(D,R)其中,B表示数据结构。
为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。
例如,如果把一年四季看作一个数据结构,则可表示成:B =(D,R)D ={春季,夏季,秋季,冬季}R ={(春季,夏季),(夏季,秋季),(秋季,冬季)}3. 存储结构数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。
由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。
一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。
顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。
链式存储结构就是在每个结点中至少包含一个指针域,用指针来体现数据元素之间逻辑上的联系。
1.2.2 线性结构和非线性结构根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。
(1)如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每一个结点最多有一个前件,也最多有一个后件。
则称该数据结构为线性结构。
线性结构又称线性表。
在一个线性结构中插入或删除任何一个结点后还应是线性结构。
栈、队列、串等都为线性结构。
如果一个数据结构不是线性结构,则称之为非线性结构。
数组、广义表、树和图等数据结构都是非线性结构。
(2)线性表的顺序存储结构具有以下两个基本特点:①线性表中所有元素所占的存储空间是连续的;②线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
元素ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。
(3)顺序表的运算有查找、插入、删除3种。
1.3 栈1. 栈的基本概念栈(stack)是一种特殊的线性表,是限定只在一端进行插入与删除的线性表。
在栈中,一端是封闭的,既不允许进行插入元素,也不允许删除元素;另一端是开口的,允许插入和删除元素。
通常称插入、删除的这一端为栈顶,另一端为栈底。
当表中没有元素时称为空栈。
栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。
栈是按照―先进后出‖或―后进先出‖的原则组织数据的。
例如,枪械的子弹匣就可以用来形象的表示栈结构。
子弹匣的一端是完全封闭的,最后被压入弹匣的子弹总是最先被弹出,而最先被压入的子弹最后才能被弹出。
2. 栈的顺序存储及其运算栈的基本运算有3种:入栈、退栈与读栈顶元素。
①入栈运算:在栈顶位置插入一个新元素;②退栈运算:取出栈顶元素并赋给一个指定的变量;③读栈顶元素:将栈顶元素赋给一个指定的变量。
1.4 队列1. 队列的基本概念队列是只允许在一端进行删除,在另一端进行插入的顺序表,通常将允许删除的这一端称为队头,允许插入的这一端称为队尾。
当表中没有元素时称为空队列。
队列的修改是依照先进先出的原则进行的,因此队列也称为先进先出的线性表,或者后进后出的线性表。
例如:火车进遂道,最先进遂道的是火车头,最后是火车尾,而火车出遂道的时候也是火车头先出,最后出的是火车尾。
若有队列:Q =(q1,q2,…,qn)那么,q1为队头元素(排头元素),qn为队尾元素。
队列中的元素是按照q1,q2,…,qn的顺序进入的,退出队列也只能按照这个次序依次退出,即只有在q1,q2,…,qn-1都退队之后,qn才能退出队列。
因最先进入队列的元素将最先出队,所以队列具有先进先出的特性,体现―先来先服务‖的原则。
队头元素q1是最先被插入的元素,也是最先被删除的元素。
队尾元素qn是最后被插入的元素,也是最后被删除的元素。
因此,与栈相反,队列又称为―先进先出‖(First In First Out,简称FIFO)或―后进后出‖(Last In Last Out,简称LILO)的线性表。
2. 队列运算入队运算是往队列队尾插入一个数据元素;退队运算是从队列的队头删除一个数据元素。
队列的顺序存储结构一般采用队列循环的形式。
循环队列s=0表示队列空;s=1且front=rear 表示队列满。
计算循环队列的元素个数:―尾指针减头指针‖,若为负数,再加其容量即可。
1.5 链表在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。
其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
链式存储方式既可用于表示线性结构,也可用于表示非线性结构。
(1)线性链表线性表的链式存储结构称为线性链表。
在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。
这样的表称为双向链表。
在线性链表中,各数据元素结点的存储空间可以是不连续的,且各数据元素的存储顺序与逻辑顺序可以不一致。
在线性链表中进行插入与删除,不需要移动链表中的元素。
线性单链表中,HEAD称为头指针,HEAD=NULL(或0)称为空表。
如果是双项链表的两指针:左指针(Llink)指向前件结点,右指针(Rlink)指向后件结点。
线性链表的基本运算:查找、插入、删除。
(2)带链的栈栈也是线性表,也可以采用链式存储结构。
带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。
1.6 二叉树1.6.1 二叉树概念及其基本性质1. 二叉树及其基本概念二叉树是一种很有用的非线性结构,具有以下两个特点:①非空二叉树只有一个根结点;②每一个结点最多有两棵子树,且分别称为该结点的左子树和右子树。
在二叉树中,每一个结点的度最大为2,即所有子树(左子树或右子树)也均为二叉树。
另外,二叉树中的每个结点的子树被明显地分为左子树和右子树。
在二叉树中,一个结点可以只有左子树而没有右子树,也可以只有右子树而没有左子树。
当一个结点既没有左子树也没有右子树时,该结点即为叶子结点。
例如,一个家族中的族谱关系如图1-1所示:A有后代B,C;B有后代D,E;C有后代F。
典型的二叉树如图1-1所示:详细讲解二叉树的基本概念,见表1-2。
图1-1 二叉树图二叉树的基本概念2. 二叉树基本性质二叉树具有以下几个性质:性质1:在二叉树的第k层上,最多有2k-1(k≥1)个结点。
性质2:深度为m的二叉树最多有2m-1个结点。
性质3:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。
性质4:具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分。
3. 满二叉树与完全二叉树满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。
在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。
完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。
对于完全二叉树来说,叶子结点只可能在层次最大的两层上出现:对于任何一个结点,若其右分支下的子孙结点的最大层次为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;否则该结点无右子结点。
1.6.2 二叉树的遍历在遍历二叉树的过程中,一般先遍历左子树,再遍历右子树。
在先左后右的原则下,根据访问根结点的次序,二叉树的遍历分为三类:前序遍历、中序遍历和后序遍历。
(1)前序遍历先访问根结点,然后遍历左子树,最后遍历右子树;并且在遍历左、右子树时,仍需先访问根结点,然后遍历左子树,最后遍历右子树。
例如,对图1-1中的二叉树进行前序遍历的结果(或称为该二叉树的前序序列)为:A,B,D,E,C,F。
(2)中序遍历先遍历左子树、然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。
例如,对图1-1中的二叉树进行中序遍历的结果(或称为该二叉树的中序序列)为:D,B,E,A,C,F。
(3)后序遍历先遍历左子树、然后遍历右子树,最后访问根结点;并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。
例如,对图1-1中的二叉树进行后序遍历的结果(或称为该二叉树的后序序列)为:D,E,B,F,C,A。
1.7 查找1.7.1 顺序查找查找是指在一个给定的数据结构中查找某个指定的元素。