第4章 数据组织及数据处理.ppt
《第4章 数据组织及数据处理.ppt》由会员分享,可在线阅读,更多相关《第4章 数据组织及数据处理.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4章章 数据组织及数据数据组织及数据处理处理 n基本概念n内存储器中数据元素之间的关系称为数据结数据结构构。n数据库数据库是存于外存储器中通用化的相关数据集合,它不仅包括数据本身,而且包括相关数据之间的联系。n数据仓库数据仓库是面向主题的、集成的、稳定的、随时间变化的数据集合,用以支持经营管理中的决策制定过程。n小故事 1n还记得在新千年到来之前的“千年虫”问题吗?当2000年新年钟声即将敲响,亿万人们在企盼新的千年会给他们带来好运的时刻,有些人却高兴不起来。因为“千年虫”可能给他的事业带来难以预料的损失。n小故事 2n“啤酒”和“尿布”的故事n年轻的爸爸在购买尿布之余,总是忘不了给自己捎
2、带上几罐啤酒。百货公司将原本放在两处的啤酒和尿布集中到了一起摆放,还提供包括啤酒和尿布在内的日用杂货周末送货上门服务,结果销售额大增。启示n类似以上的故事情况早有发生,启发我们:n数据在内存中占有一定的空间;n许多数据之间是孤立、离散的,但也有许多数据之间具有明显的一定关系,需要管理;n还有许多数据具有隐藏在深处的关系,需要挖掘。n研究数据的三个工具:n程序设计人员要熟悉数据结构,n软件应用人员利用数据库可以动态管理数据,n高层管理人员利用数据仓库可以获得决策支持。4.1 基本数据结构n计算机处理的数据都是二进制的代码,大致上可分成是有大小之分的数值和仅代表某种意义的符号。这些数据在被处理之前
3、要先放到内存储器的数据区中。用什么样的方法放置这些数据呢?这是数据结构学科主要研究的问题。对于计算机专业的学生而言,掌握数据结构的理论和方法是必须具备的基本功。4.1.1 基本概念n1 数据类型数据类型n在一种程序设计语言中,变量所具有的数据种类称为数据类型。n例如,在 C 语言中n基本类型:整型、浮点型、字符型基本类型:整型、浮点型、字符型n构造类型:数组、结构、联合、指针、枚举型、自定构造类型:数组、结构、联合、指针、枚举型、自定义义2 数据对象数据对象n某种数据类型元素的集合。n例如,整数的数据对象是-3,-2,-1,0,1,2,3,n英文字符类型的数据对象是,B,C,D,E,F,3 数
4、据结构n数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。n数据之间的相互关系称为逻辑结构通常分为四类基本结构:。n一、集合结构集合结构 数据元素除了同属于一种类型外,别无其它关系。n二、线性结构线性结构 数据元素之间存在一对一的关系。n三、树型结构树型结构 结构中的数据元素之间存在一对多的关系。n四、图状结构或网状结构结构图状结构或网状结构结构 数据元素之间存在多对多的关系。数据结构的形式定义为:数据结构是一个二元组:数据数据-结构结构=(D,S)其中:D 是数据元素的有限集,S 是 D 上关系
5、的有限集。例 履历表的数据结构定义如下:S=(C,R)其中:C 是含若干个项目,例如年龄、职业、填表日期等的集合 C1,C2,Cn,R=P,P 是定义在集合上的一种关系,例如,年龄与出生年月日有关。数据结构不同于数据类型,也不同于数据对象,数据结构不同于数据类型,也不同于数据对象,它不仅要描述数据类型的数据对象,而且要描述它不仅要描述数据类型的数据对象,而且要描述数据对象各元素之间的相互关系。数据对象各元素之间的相互关系。4 数据结构表示方法数据结构表示方法n顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。n链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此
6、指针来表示数据元素之间的逻辑关系。5 数据结构数据结构算法算法n算法:是对特定问题求解步骤的一种描述。算法:是对特定问题求解步骤的一种描述。n例如,查找中使用的二分法。n算法是指令的有限序列,其中每一条指令表示一个或多个操作。n例如,两个变量交换数据:nswap a,b4.1.2 线性表n1 线性表的逻辑结构线性表的逻辑结构n线性表(线的目录):由 n(n 0)个数据元素(结点)a1,a2,组成的有限序列其中数据元素的个数 n 定义为表的长度。当 n=0 时称为空表,常常将非空的线性表(n0)记作:。n (a1,a2,an)n这里的数据元素 ai(1 i n)只是一个抽象的符号,其具体含义在不
7、同的情况下可以不同,a i 中可能存有字符或数字。举例n例 1 26 个英文字母组成的字母表n (A,B,C,,Z)n例 2 某校从 1981 年到 1986 年各种型号的计算机拥有量的变化情况。n (1,17,28,50,92,188)例 3 学生健康情况登记表,每一行或列都是线性表姓名学 号性别年龄 健康情况王小林790631 男 18 健康陈红790632 女 20 一般刘建平790633 男 21 健康张立立790634 男 17 神经衰弱 .2 线性表的逻辑特征在非空的线性表,有且仅有一个开始结点 a1,它没有直接前趋(向左),而仅有一个直接后继(向右)a2;有且仅有一个终端结点,该
8、结点没有直接后继,而仅有一个直接前趋 a n-1;其余的内部结点 ai(2 i n-1)都有且仅有一个直接前趋 a i-1 和一个直接后继 a i+1。线性表是一种典型的线性结构。线性表是一种典型的线性结构。3 线性表算法n例,已知线性表 LA 和线性表中的数据元素按值非递减有序排列,现要求将 LA 和归并为一个新的线性表 LC,且 LC 中的元素仍按值非递减有序排列。n下面用高级计算机语言(类似 C 语言)表示算法。n例如:LA=1,3,5 LB=2,4,6n要求 LC=1,2,3,4,5,6n(详见p73-74)4.1.3 线性链表n 链表链表是指用一组任意的存储单元来依次存放线性表的结点
9、,这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的因此,链表中结链表中结点的逻辑次序和物理次序不一定相同。点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息,这个信息称为指针(point)或链(link)。结点值结点值(数据数据)和指和指针组成了链表中的结点结构。针组成了链表中的结点结构。其中:data是数据域,用来存放结点的值,point是指针域(亦称链域),用来存放结点的直接后继的地址(或位置)。由于上述链表的每一个结点只有一个链域,故将这种链表称为单链表。显然,单链表中每
10、个结点的存储地址是存放在其前趋结点下个域中,而开始结点无前趋,故应设头指针head 指向开始结点,同时,由于终端结点无后继,故终端结点的指针域为空,即Null。datapoint4.1.4 4.1.4 循环链表循环链表循环链表是一种头尾相接的链表其特点是无须增加存储量,仅对表的链接方式稍作改变,即可使得表处理更加方便灵活。最简单的是单循环链表。单循环链表。在单链表中,将终端结点的指针域改为指在单链表中,将终端结点的指针域改为指向表头结点的或开始结点,就得到了单链形向表头结点的或开始结点,就得到了单链形式的循环链表,并简单称为单循环链表。为式的循环链表,并简单称为单循环链表。为了使空表和非空表的
11、处理一致,循环链表中了使空表和非空表的处理一致,循环链表中也可设置一个头结点。这样,空循环链表仅也可设置一个头结点。这样,空循环链表仅有一个自成循环的头结点表示。如下图所示:有一个自成循环的头结点表示。如下图所示:在用头指针表示的单链表中,找开始结点 a1 的时间是 time(1),然而要找到终端结点,则需从头指针开始遍历整个链表,其时间是 time(n)4.1.5 栈 栈(stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入,删除的这一端为栈顶(顶端),另一端为栈底(底部)当表中没有元素时称为空栈。假设栈 S=(a1,a2,a3,),则 a1 称为栈底元素,为栈顶元素栈中元素按
12、 a1,a2,a3,的次序进栈,退栈的第一个元素应为栈顶元素。栈的修改是按后进先出的原则进行的。因此,栈称为后进先出表(LIFO)。例、一叠书或一叠盘子。栈的抽象数据类型的定义如下:a n a n-1 a2 a1栈顶 栈底1 顺序栈 由于栈是一种运算受限的线性表,因此线性表的存储结构对栈也适应。栈的顺序存储结构简称为顺序栈,它是运算受限的线性表,因此,可用数组来实现顺序栈。因为栈底位置是固定不变的,所以可以将栈底位置设置在数组的两端任何一个端点;栈顶位置是随着进栈和退栈操作而变化的,故需用一个整型变量top表示顶。2 链栈 栈的链式存储结构称为链栈,它是运算是受限的单链表,插入和删除操作仅限制
13、在表头位置上进行由于只能在链表头部进行操作,故链表没有必要像单链表那样附加头结点。栈顶指针就是链表的头指针。4.1.6 队列 队列(Queue)也是一种运算受限的线性表它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(Front),允许插入的一端称为队尾(Rear)。例如:排队购物时的队列操作系统中的作业排队。由于先进入队列的成员总是先离开队列,因此队列亦称作先进先出(First In First Out)的线性表,简称 FIFO 表。1 顺序队列顺序队列当队列中没有元素时称为空队列,在空队列中依次加入元素 a1,a2,之后,a1 是队头元素,a2是队尾元素。显然退出队列
14、的次序也只能是 a1,a2,,也就是说队列的修改是依“先进先出”的原则进行的。n由于队列的队头和队尾的位置是变化的,因而要设两个指针和分别指示队头和队尾元素在队列中的位置。2 循环队列n将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量,存储在其中的队列称为循环队列(Circular Queue)在循环队列中进行出队,入队操作时,头尾指针仍要加 1,朝前移动。只不过当头尾指针指向向量上界(QueueSize-1)时,其加 1 操作的结果是指向向量的下界 0。4.1.7 4.1.7 串串串串(String)是零个或多个字符组成的有限序列。是零个或多个字符组成的有限序列。一般记作S=a1a
15、2a3an,其中S是串名,双引号括起来的字符序列是串值;ai(1 i n)可以是字母,数码或其它字符;串中所包含的字符个数称为该串的长度。长度为零的串称长度为零的串称为空串为空串 (Empty String),它不包含任何字符。由一个或多个空格组成的串称为空白串由一个或多个空格组成的串称为空白串 (Blank String)。例如“”和“”分别表示长度为 1 的空白串和长度为 0 的空串。程序中串只能被引用但不能不能改变其值,即只能读不能修改。程序中串只能被引用但不能不能改变其值,即只能读不能修改。串的基本操作包括:n1 串复制(copy)将串 s1 复制到串 s2 中。n2 联接(conca
16、tenation)将串 s1 复制到串 s2 的末尾。n3 串比较(compare)比较串 s1 和串 s2 的大小。n4 字符定位(index)找某字符 c 在字符串中第一次出现的位置。4.1.8 数组多维数组是向量的推广。多维数组是向量的推广。例如,二维数组:。a11 a12 a1n a21 a22 a2n am1 am2 amn可以看成是由m个行向量组成的向量,也可以看成是n个列向量组成的向量。1 1 行优先顺序行优先顺序将数组元素按行排列,第 i+1 个行向量紧接在第 i 个行向量后面以二维数组为例,一个 m*n 个元素数组,按行优先顺序存储的线性序列为:a11,a12,a1n,a21
17、,a22,a2n,am1,am2,,amn。在 PASCAL,C 语言中,数组就是按行优先顺序存储的。2 2 列优先顺序列优先顺序将数组元素按列向量排列,第 j+1 个列向量紧接在第 j 个列向量之后,一个 m*n 个元素数组,按列优先顺序存储的线性序列为:a11,a21,am1,a12,a22,am2,an1,an2,,anm在FORTRAN语言中,数组就是按列优先顺序存储的。4.1.9 树和二叉树 树型结构是一类重要的非线性结构。树型结构是结点之间有分支,并且具有层次关系的结构,它非常类似于自然界中的树。树结构在客观世界国是大量存在的,例如家谱、行政组织机构都可用树形象地表示树在计算机领域
18、中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,可用树来组织信息;在分析算法的行为时,可用树来描述其执行过程等等。1 树 树(tree)是 n(n=0)个结点的有限集合,记为 T,T 为空时称为空树,否则T应满足如下两个条件:(1)有且仅有一个特定的称为根(root)的结点;(2)其余的结点可分为 m(m=0)个互不相交的子集 T1,T2,T3 Tm,其中每个子集又是一棵树,并称其为子树(Sub tree)。2 二叉树n 二叉树是由 n(n=0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。二叉树
19、结点的子树要区分左子树和右子树,即使只有一棵子树也要进行区分,说明它是左子树,还是右子树,这是二叉树与树的最主要的差别。下图列出二叉树的 5 种基本形态,图(C)和图(d)是不同的两棵二叉树。(a)空二叉树AABABACB (b)根和空的左右子树 (c)根和左子树(d)根和右子树(e)根和左右子树 二叉树的 5 种形式4.1.10 文件n文件是存于磁盘上的数据的集合,它不是传统意义上内存中的数据存储格式。n记录:以若干字节组成的一组数据。n1 顺序文件是按存储的先后顺序,连续存于磁盘上的记录的集合。逻辑上顺序文件的记录是连续存储的。n2 随机文件是以标号标记每个记录,以随序号顺序存于磁盘上的记
20、录的集合。逻辑上随机文件的记录是不连续存储的。4.2 数据库n 数据库技术产生于 60 年代末,70 年代初期,其主要目的是为了在计算机应用中,有效地管理和存取大量的数据资源。目前数据处理和以数据处理为基础的信息系统在计算机应用领域中所占的比重最大。n 本节中,数据是指存储在某一媒体上可加以数据是指存储在某一媒体上可加以鉴别的符号资料鉴别的符号资料。n 数据的概念包括两个方面,其一,数据内容是事物特性的反映或描述;其二,数据是存储在某一媒体上符号的集合。这里的符号,不仅指数字、字母、文字和其它特殊字符,而且还包括图形、图像、动画、影像、声音等多媒体数据。存储不仅是在纸上,包括记录在磁介质、光介
21、质上、半导体存储器等介质上。n 数据处理(包括管理)是指将数据转换成信息的过程。广义地讲,处理包括对数据的收集、存储、加工、分类、检索、传播等一系列活动。狭义地讲,处理是指对所输入的数据进行加工处理。可用以下式子简单表示:n 信息数据处理信息数据处理4.2.1 计算机数据管理n计算机数据管理大致经历了如下四个阶段:n1 人工管理阶段人工管理阶段。数据与程序不具有独立性;数据不长期保存;系统中没有对数据进行管理的软件。n2 文件系统阶段文件系统阶段。程序与数据有了一定的独立性,程序和数据分开存储,有了程序文件和数据文件的区别数据文件可以长期保存。但数据冗余度大;缺乏数据独立性;数据无集中管理。n
22、3 数据库系统阶段数据库系统阶段。避免了以上两阶段的缺点,实现数据共享,减少数据冗余;采用特定的数据模型;具有较高的数据独立性;有统一的数据控制功能。n4 分布式数据库系统阶段分布式数据库系统阶段。分布式数据库是一个逻辑上统一、地域上分布的数据集合,是计算机网络环境中各个结点局部数据库的逻辑集合。由于分布式数据库管理系统具有分布、透明、局部自治与集中控制相结合的特点,它的可靠性、可用性;灵活性更好,管理效率更高。n 80 年代,随着多媒体计算机技术的兴起,超文本也很快发展起来了超文本(HYPER TEXT)是一种非线性的网状结构。超文本机制实质上是一种典型的数据库技术,它是结点,链,网三个要素
23、的组合,提供一种沿着链访问数据的方法。Windows中的帮助文件就是一个很好的超文本示例。4.2.2 数据库系统n 数据库系统是指引进数据库技术后的计算机系统。这类系统由五部分组成:硬件系统,数据库集合,数据库管理系统(DBMS Database Management System)及相关软件,数据库管理员(DBA Database Administrator)和用户。1 DBMS 功能:n(1)数据库的定义功能提供数据定义语言 DDL(数据描述语言)或操作命令以便对各级数据模式进行具体的描述。如 FOXPRO 中用CREATE或 MODI STRU 命令进行定义和修改库结构。n(2)数据操纵
24、功能提供数据操纵语言 DML(Data Manipulation Language)对数据库中的数据进行追加,插入,修改,删除,检索等操作。n(3)数据库运行控制功能包括数据的完整性控制、数据库的并发操作控制、数据的安全性控制、数据库的恢复。n(4)数据字典数据字典 DD(Data Dictionary)中存放着对实际数据库各级模式所作的定义,即对数据库结构的描述这些数据是数据库系统中有关数据的数据,称为元数据(metadata)。2.数据关系模型数据关系模型n 在数据库中所存储的数据之间一般都有一定的关系。例如在人才库中,性别、年龄等数据都依赖于姓名,离开了具体的姓名,这些数据毫无意义。n(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 数据组织及数据处理 数据 组织 数据处理
限制150内