网站大量收购独家精品文档,联系QQ:2885784924

数据结构 的讲义.doc

  1. 1、本文档共323页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 的讲义

第一章 绪论 早期计算机主要应用于科技计算,其特点是数据类型简单,算法复杂,所以,侧重于建立程序,称之为数值计算。随着计算机以惊人速度的普及,其应用早已深入到人类社会的各个领域,早以从单纯的科技计算发展到更多地应用到控制管理和数据处理等非数值计算的工作中,其处理对象不仅可以是数值,还可以是字符、表格、声音、图像等各种信息。非数值计算的数据十分广泛,而且通常有一定的结构,要对数据进行组织,不仅要研究处理对象的特性,还需要研究它们之间存在的关系,这就是《数据结构》形成和发展的背景。 1.1《数据结构》研究什么 数据结构是研究非数值计算的程序设计中,客观实体对象的描述、信息的组织方法和相应操作的实现的学科。 非数值计算的特点是,数据类型复杂,而且数据量十分庞大。要对非数值计算设计出好的处理程序就必须解决好三方面的问题,即: 1、要对所加工的对象进行逻辑组织。这包括两方面的内容:(1)、确定作为整体进行考虑和处理的数据单位,我们称之为数据元素,它包括哪些数据项?它们是什么类型?项与项之间存在着什么关系?(2)、数据元素之间存在什么关系?例如,它们之间可能是线性关系或非线性关系(树形关系还是网状关系?); 2、如何把加工对象存储到计算机中去?这个问题称为数据的物理结构或存储结构。当我们选好了待处理问题的数据元素及它们之间的关系之后,就要把它们存储到计算机中去,以便用计算机进行处理。所以就有一个物理组织的问题。既要存储数据元素(存储了的数据元素又称结点),又要存储元素间的关系,其原则是要尽可能地兼顾节省存储和便于处理,即不仅便于算法的实现,还要尽可能使算法在空间和时间上都比较节省。由于我们所讨论的处理是在高级语言的层次上进行的,所以,我们所采用的存储结构是通过高级语言的数据类型来实现的。本书以C语言作为处理语言来讨论。 3、数据运算。数据运算是指定义在数据的逻辑结构上的一组操作。要对这些操作设计出相应的算法。“算法+数据结构=程序设计”是瑞士计算机学者Niklaus Wirthrn 所著的一本书名,它一直是为计算机工作者所公认的一句名言。当我们选好了数据的逻辑结构和物理结构之后,如果没有行之有效的算法,则不能对数据进行操作,实际问题得不到解决,反之,因为算法是作用于数据结构之上的,所以,没有数据结构,算法也就无用武之地了。数据运算的定义依赖于数据的逻辑结构,而运算的实现依赖于存储结构和所使用的程序设计语言。 我们举一个简单的例子作示意性说明。 例、设有一个电话号码薄,有N个人的姓名和电话号码。要求设计一个程序,按人名查找号码,若不存在则给出不存在的信息。 1、逻辑结构的选取: 首先,选取作为整体进行处理的数据单位,即选取数据元素。很显然,人名和他的电话号码必须一一对应,必须作为一个整体来处理,所以应取作数据元素; 其次,结点关系的选取。电话号码薄,实际上是一种表格,结点间的关系是一个顺序关系,但究竟是什么顺序呢?这个关系的选取,有时是客观存在的关系,有时是人为强加的关系,其目的是为处理的方便。例如,假定号码薄中的人员是一个大学中的教职工,根据号码薄中人员的情况,可以有不同的排列顺序:或按工作单位排列,或按住址排列,或按姓名升序排列,甚至按任意的顺序(即输入顺序)排列,总之,结点间关系不同,就意味着逻辑结构不同,因而相应的算法也会不同。 2、物理结构的选取; 这是指按什么顺序把数据存入计算机。存入计算机的顺序称为物理顺序。例如,我们选取的逻辑顺序是按人名升序排列的,其物理结构就可以有两种不同的选择:一种是逻辑顺序和物理顺序一致;另一种是逻辑顺序和物理顺序不一致。如果一致,则存储顺序本身就代表了逻辑顺序,因此,不必另存结点间的逻辑关系了,这种存储结构称为顺序存储;如果二者不同,则还要另外存储结点间的逻辑顺序。假定我们用name1,name2,name3,……,代表人名的升序,并按这一顺序把结点存放在一维数组中,如图1.1(a)所示,由数组下标表示的物理顺序和逻辑顺序完全一致;如果结点的存放顺序是按任意的顺序存储,则其物理顺序和逻辑顺序不一致,而我们对数据的处理往往要依赖于逻辑顺序,因而,除了存储结点本身之外,还要存储结点间的关系,如图1.1 (b)中,每个结点中有一个被称为指针的数据项,它指出结点的按逻辑顺序的后继结点的地址,这种存储结构称为链接存储。如果每个结点中只有一个指向后继结点的指针,这种存储方式又称为单链表,它有一个称为链头的指针,指向按逻辑顺序的第一个结点的地址。例如,在图1.1 (b)中,head=3,表示下标(即相对地址)为3的结点是逻辑上的第一个结点,它的指针项的值为4,表示下标为4的结点逻辑上排在第二,……。 3、算法设计。选好了逻辑结构和存储结构,就可以设计算法了。存储结构不同,算法也不同,例如,按图1.1(a)的方式

文档评论(0)

fangsheke66 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档