数据结构第01章概论.ppt
《数据结构第01章概论.ppt》由会员分享,可在线阅读,更多相关《数据结构第01章概论.ppt(52页珍藏版)》请在三一办公上搜索。
1、数据结构,李云清 杨庆红 揭安全,高等学校精品课程,人民邮电出版社,(第2版),什么是数据结构,数据类型和抽象数据类型,算法和算法分析,第一章 概述,瑞士著名的计算机科学家Nicklaus Wirth在1976年出版了一本书,书名为算法+数据结构=程序设计,它正说明了数据结构在程序设计中的作用。程序设计的实质即为计算机处理问题编制一组指令,首先需要解决两个问题:即算法和数据结构。算法即处理问题的策略,而数据结构即为问题的数学模型。很多数值计算问题的数学模型通常可用一组线性或非线性的代数方程组或微分方程组来描述,而大量非数值计算问题的数学模型正是本门课程要讨论的数据结构。,第一章 概述,例1、求
2、 n 个整数中的最大值。这似乎不成问题,但如果这些整数的值有可能达到1012,那么对32位的计算机来说,就存在一个如何表示的问题。,例2、交叉路口的红绿灯管理。如今十字路口横竖两个方向都有三个红绿灯,分别控制左拐、直行和右拐,那么如何控制这些红绿灯既使交通不堵塞,又使流量最大呢?若要编制程序解决问题,首先要解决一个如何表示的问题。,例3、煤气管道的铺设问题。如图需为城市的各小区之间铺设煤气管道,对 n 个小区只需铺设 n-1 条管线,由于地理环境不同等因素使各条管线所需投资不同(如图上所标识),如何使投资成本最低?这是一个讨论图的生成树的问题。,以上所举例子中的数学模型正是数据结构要讨论的问题
3、。因此,简单地说,数据结构是一门讨论描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中如何表示和实现的学科。,而信息的表示和组织又直接关系到处理信息的程序的效率。随着计算机的普及,信息量的增加,信息范围的拓宽,使许多系统程序和应用程序的规模很大,结构又相当复杂。因此,为了编写出一个“好”的程序,必须分析待处理的对象的特征及各对象之间存在的关系,这就是数据结构这门课所要研究的问题。,计算机是一门研究用计算机进行信息表示和处理的科学。这里面涉及到两个问题:,信息的表示 信息的处理,综上所述,1.1数据结构,1.1.1数据结构,随着计算机软、硬件的发展,计算机的应用范围在不断扩大,计算机
4、所处理的数据的数量也在不断扩大,计算机所处理的数据已不再是单纯的数值数据,而更多的是非数值数据。需要处理的数据并不是杂乱无章的,它们一定有内在的联系,只有弄清楚它们之间的本质的联系,才能使用计算机对大量的数据进行有效的处理。,例4 某电信公司的市话用户信息表格如下图所示:,这里序号、用户名、电话号码等项称为基本项,它是有独立意义的最小标识单位,而用户住址称为组合项,组合项是由一个或多个基本项或组合项组成,是有独立意义的标识单位,每一行称为一个结点,每一个组合项称为一个字段。使用计算机处理用户信息表中的数据时,必须弄清楚下面3个问题:,1 数据的逻辑结构,这些数据之间有什么样的内在联系?,除最前
5、和最后两个结点之外,表中所有其它的结点都有且仅有一个和它相邻位于它之前的一个结点,也有且仅有一个和它相邻位于它之后的一个结点,这些就是用户信息表的逻辑结构。,2 数据的存储结构,将用户信息表中的所有结点存入计算机时,就必须考虑存储结构,使用C语言进行设计时,常见的方式是用一个结构数组来存储整个用户信息表,每一个数组元素是一个结构,它对应于用户信息表中的一个结点。数据在计算机的存储方式称为存储结构。,3 数据的运算集合,数据处理必涉及到相关的运算,在上述用户信息表中,可以有删除一个用户、增加一个用户和查找某个用户等操作。应该明确指明这些操作的含义。比如删除操作,是删除序号为5的用户还是删除用户名
6、为王三的用户是应该明确定义的,如果需要可以定义两个不同的删除操作,为一批数据定义的所有运算(或称操作)构成一个运算(操作)集合。,对待处理的数据,只有分析清楚上面3个方面的问题,才能进行有效的处理!,数据结构就是指按一定的逻辑结构组成的一批数据,使用某种存储结构将这批数据存储于计算机中,并在这些数据上定义了一个运算集合。,基于这个二维表格,我们可以在上面执行的操 作有:增加一个元素,删除元素,查找元素等。存在的问题:线性查找的效率较低(等概率情况下为n/2)。数组存储时插入一个元素与删除一个元素效率较低。解决办法:改变数据存储结构,在新的存储结构上开发新的算法。,找95,找35,1.1.2数据
7、的逻辑结构,数据的逻辑结构是数据和数据之间所存在的逻辑关系,它可以用一个二元组B=(K,R)来表示,其中K是数据、即结点的有限集合;R是集合K上关系的有限集合,这里的关系是从集合K到集合K的关系,这里一般只涉及到一个关系的逻辑结构。,1.1.2数据的逻辑结构,例如,有5个人,分别记为a,b,c,d,e,其中a是b的父亲,b是c的父亲,c是d的父亲,d是e的父亲,如果只讨论他们之间所存在的父子关系,则可以用下面的二元组形式化地予以表达。B=(K,R)其中:K=a,b,c,d,e R=r r=,逻辑结构的图形表示方式,对K中的每个结点ki用一个方框表示,而结点之间的关系用带箭头的线段表示,这5人之
8、间的逻辑结构用图形的方式表达如下图 所示。,若kiK,kjR,r,则称ki是kj的相对于关系r的前驱结点,kj是ki的相对于关系r的后继结点,因为一般只讨论具有一种关系的逻辑结构,即R=r,所以简称ki是kj前驱,kj是ki的后继。如果某个结点没有前驱结点,称之为开始结点;如果某个结点没有后继结点,称之为终端结点;既不是开始结点也不是终端结点的结点称为内部结点。,线性逻辑结构,二、树型结构 结构中的数据元素之间存在一对多的关系。,三、图状结构或网状结构 结构中的数据元素之间存在多对多的关系。,1.1.3数据的存储结构,数据的逻辑结构是独立于计算机的,它与数据在计算机中的存储无关,要对数据进行处
9、理,就必须将数据存储在计算机中。如果将数据在计算机中无规律地存储,那么在处理时是非常糟的,是没有用的。试想一下,如果一本英汉字典中的单词是随意编排的,这本字典谁会用!对于一个数据结构B=(K,R),必须建立从结点集合到计算机某个存储区域M的一个映象,这个映象要直接或间接地表达结点之间的关系R。数据在计算机中的存储方式称为数据的存储结构。,数据的存储结构主要有4种。,1 顺序存储 顺序存储通常用于存储具有线性结构的数据。将逻辑上相邻的结点存储在连续存储区域M的相邻的存储单元中,使得逻辑相邻的结点一定是物理位置相邻。,对于一个数据结构B=(K,R)其中K=k1,k2,k3,k4,k5,k6,k7,
10、k8,k9R=r r=,它的顺序存储方式如图所示:,存储地址 M,100110021003100410051006100710081009,特点:用物理相邻的位置关系表示其逻辑关系,2 链式存储 链式存储方式是给每个结点附加一个指针段,一个结点的指针所指的是该结点的后继的存储地址,因为一个结点可能有多个后继,所以指针段可以是一个指针,也可以是一个多个指针。,例,数据的逻辑结构B=(K,R)其中 K=k1,k2,k3,k4,k5 R=r r=,这是一个线性结构,它的链式存储如图所示。,100010011002100310041005100610071008,存储地址 info next,特点:逻
11、辑上相邻物理上不一定相邻。,3 索引存储 在线性结构中,设开始结点的索引号为1,其它结点的索引号等于其前继结点的索引号加1,则每一个结点都有唯一的索引号,索引号就是根据结点的索引号确定该结点的存储地址。,4 散列存储 散列存储的思想是构造一个从集合K到存储区域M的一个函数h,该函数的定义域为K,值域为M,K中的每个结点ki在计算机中的存储地址由h(ki)确定。,1.1.4数据的运算集合,对于一批数据,数据的运算是定义在数据的逻辑结构之上的,而运算的具体实现就依赖于数据的存储结构。,数据的运算集合要视情况而定,一般而言,数据的运算包括插入、删除、检索、输出、排序等。插入:在一个结构中增加一个新的
12、结点。删除:在一个结构删除一个结点。检索:在一个结构中查找满足条件的结点。输出:将一个结构中所有结点的值打印、输出。排序:将一个结构中所有结点按某种顺序重新排列。,在程序设计中,数据和运算是两个不可缺少的因素。所有的程序设计活动都是围绕着数据和其上的相关运算而进行的。从机器指令、汇编语言中的数据没有类型的概念,到现在的面向对象程序设计语言中抽象数据类型概念的出现,程序设计中的数据经历了一次次抽象,数据的抽象经历了三个发展阶段。,1.2数据类型和抽象数据类型,从无类型的二进制数到基本数据类型的产生,从基本数据类型到用户自定义类型的产生,从用户自定义类型到抽象数据类型的出现,数据类型,数据类型(或
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 01 概论
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6578905.html