L
lsj
Unregistered / Unconfirmed
GUEST, unregistred user!
我是师范生,这学期有一份作业是要交一个教学课件,不愿做成目前流行的堆资料、卖特效
的模式,写体会,写感想,做一次尝试。假设读者对象是一个有一点基础的初学者,这种教
学方式合适吗?假设我去当教师,那么合适吗?
这是一个起头,要解决的是什么是数据结构,数据结构用来做什么这两个一般初学者的最初
疑惑,大家看看这两个问题解决了吗?
请大家多多提出意见——自己乱写的,一定错漏百出:),谢谢!
————————————————————————————————————————
概述
数据结构是在整个计算机科学与技术领域上广泛使用的术语,在接触它的定义之前让我们
先看看什么是数据。
数据是信息的载体,在计算机中是指所有输入的符号的总称。我们知道计算机是以二进制
工作的,它能处理的只有0和1,所有的数据都必须经过编码成一个个二进制序列存储在计
算机中才能加以处理。聪明的你一定会意识到这其实是一个数据的存储结构问题,你一定
会说这些工作都是由编译器或解释器为我们做的,我们操什么心啊?不错,每种语言都会
为我们提供一些基本的数据类型:整型、浮点型、字符型、和布尔型。这些数据类型能够
胜任我们的任何工作,我们可以称之为具有原子性。如果你学过化学,你一定会知道在无
机化学中使用原子来描述我们的化学反应过程是很方便的,但在有机化学中,我们用来描
述化学反应过程时绝大多数使用的基本单位却是原子的聚合物--各种"基"。原因很简单,
如果我们用原子去描述有机化学反应,不是不行,而是变得非常麻烦,无法清晰的反映出
化学反应的本质,会使我们纠缠于一些不必要的细节,为分析工作带来很多不必要的麻烦。
那么我们的化学方程又与数据结构有何关系呢?我说他们背后的思想是一致的:高效的描述
问题以突显问题的本质,方便我们简便的解决问题。
计算机的应用已不再局限于科学计算(数值计算),而是更多的用于管理、控制、数据处理
等非数值计算,与此相应的是处理对象类型的千差万别。如果都用基本数据类型描述的话,
工作量之大可想而知。一个聪明的解决办法就是用基本的数据类型与运算定义自己的"基本"
数据类型,一次定义,全局使用,这样我们就可以集中注意力实现我们的业务逻辑了--这里
已体现了面向对象编程思想的一个核心:封装。还有一个更聪明的办法,就是通过一种机制
使得我们自定义的数据类型具有扩展性与弹性,以面对未来数据类型的动态变化--这里体现
了面向对象编程思想的两个核心:继承与多态。面向对象编程超出了我们讨论的范围,提及
这些只是为了说明技术虽然在变化,但指导思想是没有变的,我们只要顺着这个思路,结合
当今硬件的发展与限制,就能理解到新技术的本质,有助于我们更好的掌握甚至开发新技术。
现在我们可以来看看数据结构的定义了:数据结构是指同一数据元素类中各数据元素之间的
关系。根据这个定义和我们的讨论,我们可以知道数据结构应该分为三个组成部分:数据的
逻辑结构(由哪些基本数据类型组成)、数据的存储结构(数据在内存中的布局)和数据运
算(如何用基本数据类型实现数据元素之间的关系)。一句话:数据结构反映了一个数据的
内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。
我们已经知道了什么是数据结构,接下来就让我们大略地看看数据结构在计算机科学中的
地位与用途:数据结构的研究是计算机科学的重要基石,计算机科学各领域及有关的应用
软件都要用到各种数据结构。语言编译要使用栈、散列表及语法树;操作系统中用列、存
储管理表及目录树等;数据库系统运用线性表、多链表及索引树等进行数据管理;而在人
工智能领域,依求解问题性质的差异将涉及到各种不同的数据结构,如广义表、集合、搜索
树及各种有向图等等。
的模式,写体会,写感想,做一次尝试。假设读者对象是一个有一点基础的初学者,这种教
学方式合适吗?假设我去当教师,那么合适吗?
这是一个起头,要解决的是什么是数据结构,数据结构用来做什么这两个一般初学者的最初
疑惑,大家看看这两个问题解决了吗?
请大家多多提出意见——自己乱写的,一定错漏百出:),谢谢!
————————————————————————————————————————
概述
数据结构是在整个计算机科学与技术领域上广泛使用的术语,在接触它的定义之前让我们
先看看什么是数据。
数据是信息的载体,在计算机中是指所有输入的符号的总称。我们知道计算机是以二进制
工作的,它能处理的只有0和1,所有的数据都必须经过编码成一个个二进制序列存储在计
算机中才能加以处理。聪明的你一定会意识到这其实是一个数据的存储结构问题,你一定
会说这些工作都是由编译器或解释器为我们做的,我们操什么心啊?不错,每种语言都会
为我们提供一些基本的数据类型:整型、浮点型、字符型、和布尔型。这些数据类型能够
胜任我们的任何工作,我们可以称之为具有原子性。如果你学过化学,你一定会知道在无
机化学中使用原子来描述我们的化学反应过程是很方便的,但在有机化学中,我们用来描
述化学反应过程时绝大多数使用的基本单位却是原子的聚合物--各种"基"。原因很简单,
如果我们用原子去描述有机化学反应,不是不行,而是变得非常麻烦,无法清晰的反映出
化学反应的本质,会使我们纠缠于一些不必要的细节,为分析工作带来很多不必要的麻烦。
那么我们的化学方程又与数据结构有何关系呢?我说他们背后的思想是一致的:高效的描述
问题以突显问题的本质,方便我们简便的解决问题。
计算机的应用已不再局限于科学计算(数值计算),而是更多的用于管理、控制、数据处理
等非数值计算,与此相应的是处理对象类型的千差万别。如果都用基本数据类型描述的话,
工作量之大可想而知。一个聪明的解决办法就是用基本的数据类型与运算定义自己的"基本"
数据类型,一次定义,全局使用,这样我们就可以集中注意力实现我们的业务逻辑了--这里
已体现了面向对象编程思想的一个核心:封装。还有一个更聪明的办法,就是通过一种机制
使得我们自定义的数据类型具有扩展性与弹性,以面对未来数据类型的动态变化--这里体现
了面向对象编程思想的两个核心:继承与多态。面向对象编程超出了我们讨论的范围,提及
这些只是为了说明技术虽然在变化,但指导思想是没有变的,我们只要顺着这个思路,结合
当今硬件的发展与限制,就能理解到新技术的本质,有助于我们更好的掌握甚至开发新技术。
现在我们可以来看看数据结构的定义了:数据结构是指同一数据元素类中各数据元素之间的
关系。根据这个定义和我们的讨论,我们可以知道数据结构应该分为三个组成部分:数据的
逻辑结构(由哪些基本数据类型组成)、数据的存储结构(数据在内存中的布局)和数据运
算(如何用基本数据类型实现数据元素之间的关系)。一句话:数据结构反映了一个数据的
内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。
我们已经知道了什么是数据结构,接下来就让我们大略地看看数据结构在计算机科学中的
地位与用途:数据结构的研究是计算机科学的重要基石,计算机科学各领域及有关的应用
软件都要用到各种数据结构。语言编译要使用栈、散列表及语法树;操作系统中用列、存
储管理表及目录树等;数据库系统运用线性表、多链表及索引树等进行数据管理;而在人
工智能领域,依求解问题性质的差异将涉及到各种不同的数据结构,如广义表、集合、搜索
树及各种有向图等等。