学习数据结构 -> 数据结构的基本概念
2012-11-16 19:05 wid 阅读(2163) 评论(2) 编辑 收藏 举报学习数据结构 -> 数据结构的基本概念
=============================
1.数据结构的定义:
数据结构(Data Structure)是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
2. 数据结构中的一些基本术语:
1>. 数据(data)
数据是指计算机能够接受和处理的一切对象, 例如数字、字符、图像、声音、动画等等。
2>. 数据元素(data element)
数据元素是指在计算机中作为一个整体考虑和处理的对象, 是组成数据的基本单位。在学生信息管理系统中, "学生"和"学生的成绩"可以看做是数据元素, 数据元素又可由若干数据项(data item)组成, 在学生信息管理系统中, 学生的姓名、年龄、班级等是"学生"这个数据元素的的数据项, 而"学生的成绩"数据元素是由语文、数学、英语等数据项组成。
3>. 数据对象(data object)
数据对象是指性质相同的若干数据元素的集合, 是数据的子集。 如: 正整数的数据对象是集合N* = {1, 2, 3, ...}, 动物的数据对象是集合A = {猫, 狗, 猪, 牛, ...}等。
数据对象也可以是由其他的数据对象复合而成, 例如数据对象实数 = {有理数, 无理数}, 而有理数是由整数和分数复合而成, 整数和分数又有自己的数据元素集合。
3. 数据结构的研究方向:
数据结构是研究数据与数据之间关系的一门学科, 主要包括以下三个方面:
1>. 数据元素之间的逻辑关系, 称为数据的逻辑结构(logic structure);
2>. 数据在计算机中的表示方式, 称之为数据的存储结构(storage structure)或物理结构(physical structure);
3>. 数据之间所要进行的运算, 称之为数据的操作(operation)。
数据的逻辑结构是从逻辑上开描述数据之间的关系, 它与数据在计算机中的存储无关, 独立于计算机。
数据的存储结构是指数据在计算机中是如何存储的, 它依赖于计算机。
4. 数据的的逻辑结构:
数据的逻辑结构按关系分为线性结构(关系是线性的)和非线性结构(关系是非线性的)。
1>. 线性结构包括线性表、栈和队列、 串、数组、广义表。
2>. 非线性数据结构包括树、二叉树、有向图、无向图以及集合类型。
图示如下:
5. 数据的存储结构:
计算机的存储器是由许多个存储单元组成的, 每个存储单元有唯一的地址, 数据在计算机中的存放有4种基本的存储方式:
1>. 顺序(Sequential)存储方法:
顺序存储方法就是把每个结点的数据, 按照某种顺序存放在一段连续的存储单元中。
2>. 链式(Linked)存储方法:
把每个结点的数据, 零散地存放在一些存储单元中。
3>. 索引(Index)存储方法:
用结点的索引号i来确定结点的存储单元地址, 把每一个结点的数据按一定规律顺序或链式存放在存储单元中。
4>. 散列(Hash)存储方法:
把每个结点的数据通过一个预设的散列函数, 来决定该结点的存储单元。
6. 数据结构的研究方式:
研究数据结构的的方式较为常用的是ADT(抽象数据类型, Abstract Data Type 简称ADT), ADT实际上是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型可以使我们更容易描述现实世界。例如: 用线性表描述学生成绩表,用树或图描述遗传关系。 抽象数据类型的关键在于使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如何存储。
抽象数据类型的特点:
1>. 信息的隐蔽性
2>. 模块化
3>. 描述的精确性
4>. 简单性
5>. 完整性
6>. 实现的独立性
数据结构的研究与其描述语言无关, 各种计算机语言, 比如C、C++、JAVA、C#、Python等都可以用来对数据结构进行描述, 虽说其描述的语言不同, 但其描述的思想是相同的。
与语言有关的是抽象数据类型的定义与其实现方式。
一个抽象数据类型通常包括定义、表示、实现三个部分:
定义即为公共属性, 与编程语言无关, 对编程者是可见的;
表示和实现与语言有关, 是私有属性, 对其他编程者是不可见的。
7. 抽象数据类型的表示:
抽象数据类型可用以下三元祖表示: (D, S, P):
D表示数据对象, S是D上的关系, P是对D的基本操作集。
ADT抽象数据类型名{
数据对象 : (数据对象的定义)
关系 : (数据关系的定义)
基本操作 : (基本操作的定义)
}ADT抽象数据类型名
其中数据对象的数据关系的定义可用伪代码描述, 基本操作的定义格式为:
基本操作名(参数列表)
初始条件 : (初始条件描述)
操作结构 : (操作结构的描述)
对于这些术语以及所提到的其他名词需要我们在以后的学习中慢慢体会。
--------------------
wid, 2012.11.16