数据结构简单介绍
1、首先我们要清楚数据包含什么
数据:
我们可以将数据分为两大类,一类是整数、小数等数值数据,另一类是文字、声音和图像等非数值数据。
数据元素:
是数据的基本单位,在计算机程序中通常当作一个整体进行处理,由任意多个数据项组成。
数据项:
是构成数据元素的不可分割的最小单位
数据对象:
由性质相同的数据元素组成的集合,是数据的子集
举个例子理解数据
比如注册一个会员,需要把会员的,姓名,手机号,爱好等存进会员档案里
会员的姓名,手机号等就是一个个数据项,存进档案里的一个个会员的基本信息就是一个个数据元素,而这个会员档案里的所有会员组成一个集合就是数据对象。
2、什么是数据结构
数据结构是指,数据元素之间存在一种或多种特定关系,这样的关系就是结构。数据结构就是计算机存储、组织数据的方式。数据结构分为逻辑结构和物理结构,我们可以从这两点了解数据结构
2.1、逻辑结构
数据的逻辑结构反映的是数据元素之间的逻辑关系,其中的逻辑关系是指数据元素之间的前后
间关系,而与他们在计算机中的存储位置无关。
数据按照划分条件的不同又可以分为不同的类型
方式一,按照四类基本逻辑结构划分,数据结构包括一下四种
- 集合结构:数据元素除了“同属一个集合”的关系外,没有其他关系存在。
- 线性结构:数据元素存在一对一的线性关系,如糖葫芦,除了首尾,每个数据元素都有一个直接前驱一个直接后继。
- 树形结构:数据结构中的元素存在“一对多”的层次关系,例如公司组织架构。
- 图形结构或网状结构:数据元素存在多对多的层次关系,比如地图中两个地点之间的路线,结合周边的地点可以组成多种可能。
方式二,按照线性和非线性可以分为两种
- 线性结构:线性结构中,有且仅有一个开始节点和终端节点,并且每个节点都最多有一个直接前驱和直接后继,数据元素之间是一对一的关系。常见的线性结构有数组、栈、队列、链表
- 非线性结构:简单地说,非线性结构就是表中各个结点之间具有多个对应关系(即一对多关系和多对多关系),在非线性结构的一个结点可能有多个直接前驱结点和多个直接后继结点。常见的非线性结构有:二维数组、多维数组、树结构和图结构等。
2.2、物理结构(也可称为存储结构)
数据的逻辑结构在计算机存储空间中的存放形式称为数据的物理结构,或称为数据的存储结构。
常见的存储结构有:顺序存储结构、链式存储结构、索引存储结构和散列存储结构。
- 顺序存储结构:用一组连续的存储空间单元来储存数据元素,数据元素的逻辑关系由储存位置表示
实际上,顺序储存结构就是用数组来保存数据的, 线性表也就是数组的一种特殊储存方式:从头到尾依次储存数据。 Java中ArrayList集合底层就是一个动态数组,数据结构就是用顺序存储结构实现,随机访问速度快,插入和移除性能较差(数组的特点) - 链式存储结构:用一组任意的存储单元来存储数据元素,通过保存地址的方式找到相关联的数据元素,数据元
素之间的逻辑关系用引用(指针)来表示。Java 中linkedList底层就是用的双向链表保存数据,数据结构就是用链式存储结构实现的,随机访问集合的元素速度慢,插入和移除速度快。 - 索引存储结构:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。例如:图书目录、字典的目
录、通讯目录等等。 - 散列存储结构:根据结点的关键字直接计算出该结点的存储地址。例如:java 集合中的HashSet 和 HashMap 采 用的都是散列存储结构,一种神奇的结构,添加、查询速度快。
3、逻辑结构和物理结构的总结
逻辑结构是从具体问题抽象出来的数据模型,是面向问题的,反应了数据结构的关联方式或邻
接关系;物理结构,指的就是逻辑结构在计算机中的存储形式,是面向计算机的,其目标是将数据
及逻辑关系存储到计算机中。