数据结构发展史Word文档格式.docx
《数据结构发展史Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构发展史Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
![数据结构发展史Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/4/549ed180-6935-4318-b604-0c0308cb6858/549ed180-6935-4318-b604-0c0308cb68581.gif)
因此,主要有三个方面的内容:
数据的逻辑结构;
数据的物理存储结构;
对数据的操作(或算法)。
通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。
其具体的最主要内容有以下几点:
1.数据的各种逻辑结构和物理结构,以及他们之间的相应关系
2.并对每种结构定义相适应的各种运算
3.设计出相应的算法
4.分析算法的效率
第三章数据结构的史源
1968年在美国开设。
它随着大型程序的出现而出现。
“数据结构”作为一门独立的课程在国外是从1968年才开始设立的。
1968年美国唐•欧•克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。
“数据结构”在计算机科学中是一门综合性的专业基础课。
数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。
数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设。
1968年克努思教授开创了数据结构的最初体系,他所著的《计算机程序设计艺术》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的著作。
70年代初,数据结构作为一门独立的课程开始进入大学课堂。
数据结构在计算机科学界至今没有标准的定义。
个人根据各自的理解的不同而有不同的表述方法。
例的数据元素之间的各种联系。
这些联系可以通过定义相关的函数来给出。
”他将数据对象(data
object)定义为“一个数据对象是实例或值的集合”。
Sartaj
Sahni在他的《数据结构、算法与应用》一书中称:
“数据结构是数据对象,以及存在于该对象的实例和组成实
Clifford
A.Shaffer在《数据结构与算法分析》一书中的定义是:
“数据结构是
ADT(抽象数据类型Abstract
Data
Type)
的物理实现。
”
第四章数据结构的飞速发展
自从美国唐〃欧〃克努特教授用汇编语言编写的《计算机程序设计技巧》第一卷《基本算法》问世以来,已经出现了用Pascal、Java、C、C++、C#等语言编写的数据结构方面的书。
总体说来,这些语言基本上分为面向过程的语言和面向对象的语言两大类,也出现过采用两种语言描述数据结构的书籍,如C和C++语言描述,但作者实际上是按照C++语言描述。
同时采用面向过程和面向对象语言描述数据结构,目前国内基本上是空白。
对于同一种数据结构与算法,同时采用面向过程和面向对象语言进行描述,可以从中更深刻理解这两种思想的不同,这对于深刻理解计算机语言和思想有着重要的作用。
C语言是现在最流行的面向过程的语言,在业界使用非常广泛。
而C#语言作为微软在新一代开发平台(.NET)上推出的、完全面向对象的语言,凭着其简洁、高效、模板、标准化的特性,使得C#语言像程序设计语言中的一件艺术品,也吸引着越来越多的开发人员。
当然,C#与C是相似的。
第五章数据结构发展的三阶段
数据结构随着程序设计的发展而发展。
程序设计经历了三个阶段:
无结构阶段、结构化阶段和面向对象阶段,相应地,数据结构的发展也经历了三个阶段:
⑴
无结构阶段。
40~60
年代,计算机的应用主要针对科学计算,程序设计技术以机器语言
/
汇编语言为主,程序处理的数据是纯粹的数值,数据之间的关系主要是数学公式或数学模型。
这一阶段,在人类的自然语言与计算机编程语言之间存在着巨大的鸿沟,程序设计属于面向计算机的程序设计,设计人员关注的重心是使程序尽可能地被计算机接受并按指令正确执行,至于程序能否让人理解并不重要。
⑵
结构化阶段。
60~80年代,计算机开始广泛应用于非数值处理领域,数据表示成为程序设计的重要问题,人们认识到程序设计规范化的重要性,提出了程序结构模块化,并开始注意数据表示与操作的结构化。
数据结构及抽象数据类型就是在这种情况下形成的。
数据结构概念的引入,对程序设计的规范化起到了重大作用。
图灵
[2]奖获得者沃思[3]给出了一个著名的公式:
数据结构
+
算法
=
程序。
从这个公式可以看到,数据结构和算法是构成程序的两个重要的组成部分,一个软件系统通常是以一个或几个关键数据结构为核心而组织的。
随着软件系统的规模越来越大、复杂性不断增加,人们不得不对结构化技术重新评价。
由于软件系统的实现依赖于关键数据结构,如果这些关键数据结构的一个或几个有所改变,则涉及到整个系统,甚至导致整个系统彻底崩溃。
⑶面向对象阶段
面向对象技术(首先是面向对象程序设计)始于
80
年代初,是目前最流行的程序设计技术。
在面向对象技术中,问题世界的相关实体被视为一个对象,对象由属性和方法构成,属性用以描述实体的状态或特征,方法用以改变实体的状态或描述实体的行为。
一组具有相同属性和方法的对象的集合抽象为类,每个具体的对象都是类的一个实例。
例如,“教师”是一个类,“
王老师”、“
李老师”等对象都是“教师”类的实例。
由于对象(类)将
密切相关的属性(数据)和方法(操作)定义为一个整体,从而实现了封装和信息隐藏。
使用类时,无需了解其内部的实现细节,一旦数据(结构)修改了,只需修改类内部的局部代码,软件系统的其余部分无需修改。
第六章数据结构的前景
1.数据结构将继续随着程序设计的发展而发展;
2.面向各专门领域的数据结构得到研究和发展,各种空间数据结构也在探索中。
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。
对数据元素间逻辑关系的描述称为数据的逻辑结构;
数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;
此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。
一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。
许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。
许多时候,确定了数据结构后,算法就容易得到了。
有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。
不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。
这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
可见数据结构的发展前景是不可限的。