基本概念
什么是数据?
搞懂数据结构前需先理解数据的概念是什么?本身是用于描述自然界客观事物,站在计算机领域角度解读则是程序操作的对象,具体指可以输入到计算机里的数值、字符、符号、声音、图像、视频等等,且可以被处理的信息统称为数据。
通过归纳,以面向对象的编程思想可以得出一个数据由4部分组成:
1、数据类:属性相同的数据项的集合,例如:人、车、书等都可以称之为数据类,它是用来描述自然界客观事物的一种抽象描述;
2、数据对象:数据类的子集,比如:人这个数据类有个叫张三的人,描述张三各种信息的集合称之为数据对象。它是数据中的个体,由数据项(属性)组成,在程序中通常将其作为一个整体来处理。组成数据的基本单位,是数据集合的个体。在计算机程序中通常作为一个整体来处理,比如一条描述学生完整信息的数据记录就是一个数据元素,在空间中某个点的三维坐标也是一个数据元素,数据元素通常由若干个数据项组成,比如描述学生相关信息的姓名、学号等都是数据元素的数据项;三维坐标系中的每个坐标值也都是数据项。数据项
3、数据项(属性):数据类的子集,比如:人有姓名、性别、年龄等,这些称之为数据项。它具有原子性,在数据中是不可再分的最小单位。
4、数据结构:用来描述数据内部的组织结构,接下来会详细介绍到。
什么是数据结构?
数据一词+结构一词就构成了数据结构,这个词汇是计算机科学与计算机技术领域中广泛使用的专业术语。根据字面意思来讲:它是用来描述一个数据的内部结构,即有哪些成分数据,和成分数据的组织结构。
下面以Javascript编程语言写两个简单的数据结构(仅从代码角度帮助理解数据结构,而实际的数据结构并非如下所示,在此只是为了方便理解上面的概念)。
// 数据结构一
// 0-1的成分数据是Person,2-3的成分数据是Car
[
{name: "小明", age: 12, sex: "男"},
{name: "小红", age: 12, sex: "女"},
{brand: "上海大众", model: "cc", price: 100000},
{brand: "奥迪", model: "A8", price: 200000}
]
// 数据结构二
// 从下面可以看出,相较于数据结构一数据的组织结构表达的更清晰,对象中分为两个数组,一是person,二是car
{
person: [
{name: "小明", age: 12, sex: "男"},
{name: "小红", age: 12, sex: "女"}
],
car: [
{brand: "上海大众", model: "cc", price: 100000},
{brand: "奥迪", model: "A8", price: 200000}
]
}
从数据结构一和数据结构二中可以发现数据组织结构不一样,成分数据则是具有相同属性的数据,如:person和car。常见的数据结构包含:线性表、栈、队列、树状、图状。
基本概念讲清楚后,补充一点,数据结构是一门学科,主要有3方面的研发方向:一,数据的逻辑结构;二,数据物理存储结构;三,如何操作数据,也称算法。在此强调一下算法一词,算法的设计取决于数据的逻辑结构,算法的实现取决于物理存储结构。综上所述,这门学科前两个研究方向是数据基础,第三个研究方向是数据应用。
数据的逻辑结构和存储结构
数据结构有逻辑上的数据结构和物理存储上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构存在的意义是为了提高算法的效率,它通常有一组算法的集合相对应。
逻辑结构
按照组织结构,可以分为4类:
1、集合:每一个成分数据之间是没有联系的
2、线性结构:每一个成分数据前后两个元素是有联系的
3、树形结构:成分数据的组织结构可以看做是一个倒过来的树
4、图状结构:其中成分数据可能于其他元素都有关联
物理存储结构
数据在计算机内存、寄存器、硬盘中的存储形式,也可以分为4类:
1、顺序:最为常见
2、链式:最为常见
3、索引
4、散列
数据的运算
数据的运算是在数据的逻辑结构上定义的操作,它在数据的存储结构上实现,算法的意义就是为了让这些操作更加高效。常见的数据运算有5种操作:插入、修改、删除、查找、排序。
网友评论