1.什么是数据?
信息的载体,它能被计算机识别、存储和加工处理。它是计算机程序加工的 ’原料‘。
2.数据元素?
数据的基本单位,有些情况下数据元素也称为元素、节点、顶点、记录。
3.数据类型?
所谓数据类型是一个值的集合以及在这些值上定义的一组操作的总称。
例如C语言的”整数类型“就定义了一个整数的可取值得范围(“其最大值int-max依赖于具体机器”)以及对整数可施加的加、减、乘、除和取模等操作。
按”值“是否可分解,可将数据类型分为两类:原子类型、结构类型;
原子类型:其值不可分解,如c语言中的整型。
结构类型:其值可分解为若干个成分,如C中的数组、结构等类型
原子类型与结构类型区别:
原子类型通常由语言直接提供,而结构类型则是用户借助于语言提供的描述机制自己定义的。通常数据类型可看作是程序设计语言中已实现的数据结构。
4.数据结构?
指的是数据之间的相互关系,即数据的组织形式。虽然至今没有一个数据结构的标准定义,但它一般包含以下三个方面的内容:
1.数据元素之间的逻辑关系,也称为数据的逻辑结构。
2.数据元素及其在计算机存储器内的表示,称为数据的存储结构。
3.数据的运算,即对数据施加的操作。
逻辑结构?
数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的;
数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。
存储结构?
数据的存储结构是逻辑结构用计算语言的实现(亦称为映像),它是依赖于计算机语言的,对机器语言而言,存储结构是具体的。
数据的运算?
数据的运算是定义在数据的逻辑结构上,每种逻辑结构都有一个运算的集合。例如数组的查询、插入、移除、排序等。
5.抽象数据类型 ?
1.抽象数据类型(Abstract Data Type 简称ADT)是指抽象数据的组织和与之先关的操作。可看作是数据的逻辑结构及其在逻辑结构上定义的操作。
2.抽象数据类型可以看做是描述问题的模型,它独立于具体实现。它的优点是将数据和操作封装在一起,使得用户程序只能通过在ADT里定义的某些操作来访问其中的数据,从而实现信息隐藏。在C++中用类的说明来表示ADT,用类来实现ADT。因此,c++中实现的类相当于是数据的存储结构及其在存储结构上实现对数据的操作。(对象概念)
6.数据的逻辑结构分为:线性结构、非线性结构。
线性结构:逻辑特征是,若结构是非空集,则有且仅有一个开始节点和一个终端节点,并且所有节点都有一个直接前趋和一个直接后继。
非线性结构:所及特征是,一个节点可能有多个前趋和直接后继。
7.数据的存储结构可以用以下四种基本的存储方法得到。
1.顺序存储方法:该方法是把逻辑上相邻的节点存储在物理位置上相邻的存储单元里,节点间的逻辑关系由存储单元的邻接关系来体现。如数组。
2.链接存储方法:该方法不要求逻辑上相邻的节点在物理位置上亦相邻,节点间的逻辑关系是由附加的指针字段表示。
3.索引存储方法:该方法通常是在存储节点信息的同时还建立附加的索引表。索引表中的每一项称为索引项,索引项的一般形式是:关键字,地址。关键字是能唯一标识一个节点的那些数据项。
若每一个节点都在索引表中有一个索引项,则该索引表称之为稠密索引。
若一组节点在索引表中只对应一个索引项,则该索引表称为稀疏索引。
4.散列存储方法:该方法的基本思想是根据节点的关键字直接计算出该节点的存储地址。(如hash表)
8.数据结构总结:许多教科书上是将数据的逻辑结构和数据的存储结构定义为数据结构,而将数据的运算定义为数据结构上的操作。但是,无论是怎样定义数据结构,都应该将数据的逻辑结构、存储结构、数据的运算这三方面看成一个整体。不要孤立地理解一个方面,而要注意它们之间的联系。