- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构的基本概念及算法
什么是数据结构?为什么要学习数据结构?是学生学习这门课程之前最希望了解的。本章内容就是阐述这些问题。
1.1 什么是数据结构
什么是数据结构?为什么信息类的学生要学习数据结构?目前,随着计算机技术的发展,你将看见越来越多的大程序出现,而软件相对独立性及某些结构化和海量化的方法应用,使得人们更加重视数据结构。而程序设计的本质就是对给出的问题选择出一种好的数据结构和设计一个好的算法。
数据结构是随着计算机的产生和发展而发展起来的一门介于数学、计算机硬件和计算机软件三者之间的一门核心课程。那数据结构究竟学习什么?我们知道,最近几年,计算机的发展突飞猛进,不仅仅体现在计算机本身的运算速度提升、价格持续走低、存储能力大幅度提高等方面,而且其应用无所不在,范围之广。随着计算机应用扩展,与此相适应,计算机加工处理的对象,也从最简单的数字处理到字符、图像、声音等各种复杂的、具有一定结构的数据。
什么是数据结构呢?不妨先举一个简单的例子说明,然后再给出确切的定义。
假定某大学有一个学生管理系统,专门记录学生的同学通讯录,记录了本学校所有的学生的姓名、家庭地址、联系电话、电子邮件、QQ号码等。现在要求设计一个程序或算法,当给定任何一个学生姓名的时候,计算机能查出该学生的各种联系发誓,如果根本没有这个人,计算机也能明确告诉“查不到此人”!
那么这个工作就是“查找”。而根据学生姓名在同学通讯录表中的位置不同,查找的快慢就很不同。
比如,现在校长想找某个学生谈话,而现在一个较大高校一般有2万在校学生,所有学生都站在操场集合。一种方法是学生任意排列,其次序没有任何规律。那么校长就很辛苦,只能依次从第一个学生逐个与要找的学生比较(即顺序查找),直到找得到或找不到此人。试想:2万学生,校长什么时候比较完?这样的效率太低了。
如果,我们对学生进行适当的组织,即按字母的顺序排列或按专业再构造一个索引表,用这个表来登记每一个字母。这样就可以大为改善。所以采用了不同的结构,就可以写出不同的算法或程序。
上述学生管理系统的组织方式就是一个数据结构问题。两种不同的数据结构,可以得到两种完全不同的算法。由此可见,计算机的算法与数据结构密切相关。即任何一个数据结构依赖与具体的数据结构,数据结构直接影响着算法或程序的效率。
又如:当新生报到后,要添加新学生的数据信息;当老生毕业时,要删除该生的相关信息;当某个学生转专业了,要修改信息等等。所以数据结构必须给出相应的插入、删除、修改等运算。
通过这个例子,简单地说:数据结构是一种构造解决问题的方法或策略。实际更是一门研究程序设计中计算机处理对象以及它们之间关系和运算的一门计算机学科。
1.2 数据结构的基本概念和术语
在计算机科学中,数据(data)是计算机程序加工处理的对象。抽象地描述,数据是对客观事物所进行的描述,而这种描述是采用了计算机系统所能识别、存储和处理的形式来进行的。比如数据结构期末成绩,其数据就是实数。因此,对计算机而言,数据含义很广,包括声音、图像、色彩等非数值数据。前面举例中学生相关信息就是数据。
数据元素(data element):是数据的基本单位,即数据这个集合中的一个客体,在计算机程序中通常作为一个整体进行考虑和处理。而数据项:有时,一个数据元素可由多个数据项组成。数据项是数据的不可分割的最小单位。
数据对象(data object):是性质相同的数据元素的集合,是数据的一个子集。例如:某班级本学期《数据结构》期末成绩集合{23,89,98…… }。数据对象可以是有限的,也可以是无限的。
数据类型、抽象数据类型
数据类型:是一个值的集合和定义在这个值集上的所有的操作。例如,整数类型。
数据类型可分为:非结构的原子类型和结构类型。原子类型的值是不可分解的,结构类型的值是由若干成分按某种结构组成的。
抽象数据类型:是指一个数学模型以及定义在该模型上的一组操作。抽象数据类型和数据类型实质上是一个概念,它仅取决于数据类型的逻辑性,而与其在计算机内部如何表示和实现是无关的。
抽象数据类型的定义由一个值域和定义在该值域上的一组操作组成。
抽象数据类型按其值的不同特性,分为三种类型:
原子类型:变量的值是不可分解的。
固定聚合类型:变量的值由确定数目的成分按某种结构组成。
可变聚合类型:其值的成分数目不确定。
抽象数据类型的形式定义:我们用一个三元组来表示一个抽象数据类型。
(D,S,P)
D是数据对象, S是D上的关系集, P是对D的基本操作。
格式:
ADT 抽象数据类型名{
数据对象:〈数据对象的定义〉
数据关系:〈数据关系的定义〉
基本操作:〈基本操作的定义〉
}ADT 抽象数据类型名。
数据对象和数据关系的定义用伪码描述。
数据基本操作的定义格式:
基本操作名(参
文档评论(0)