数据结构
什么是数据结构
研究非数值计算的程序设计中的操作对象,以及他们之间的关系和操作等相关的问题的学科
程序设计=数据结构+算法
数据
数据
描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别并输入给计算及处理的符号集合。
数据不仅包括数值类型,还包括图片,声音,视频等非数值类型
数据元素
组成数据的,有一定意义的基本单位。在计算机中通常被作为整体处理。也被称为记录。
比如在计算机编程语言中,C语言、JAVA、Python都是计算机编程语言中的数据元素
数据项
数据项是数据不可分割的最小单位
一个数据元素可以由若干个数据项组成。
比如一个人可以有眼睛、鼻子、嘴巴这样的数据项,也可以有姓名、年龄、性别这样的 数据项。
数据对象
性质相同的数据元素的集合,是数据的子集。
什么叫性质相同呢,就是人都有同名同姓,生日在同一天,性别相同的情况发生。由于数据对象是数据的子集,在实际应用中,处理的数据元素通常具有相同的性质,在不混淆的情况下,我们都将数据对象成为数据。
结构
结构
相互之间存在一种或者多种特定关系的数据元素的集合
简单点理解就是关系。抽象的话比如人与地球关系,人和地球都是数据元素,之间不是相互独立的,人类依靠地球生存。又比如组成分子的原子之间的排列方式。
严格的说,结构就是各个组成部分之间的相互排列的方式。
逻辑结构
数据对象中数据元素之间的相互关系
集合结构
集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。
集合的两个重要特点:1.成员是无序;2.每个成员都只在集合中出现一次。
线性结构
线性结构中的数据元素之间是一对一的关系
除了首尾元素之外,其他元素都只有唯一前驱和唯一后继
树形结构
树形结构中的数据元素之间存在一种一对多的层次关系
图形结构
图形结构的数据元素是多对多的关系
物理结构
数据的逻辑结构在计算机中的存储形式。物理结构也称为存储结构。
就好像将一个树形结构如何存储在计算机的存储器中。存储器主要针对内存而言,U盘、移动硬盘等外部存储器的数据组织通常用文件结构来描述
数据元素的存储结构(物理结构)形式有两种:顺序存储和链式存储。
顺序存储结构
将数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
比如数组,当我们开辟数组空间时,计算机在内存中找到一片连续的地址,将我们的元素依次存进去。
- 优点:实现随机存取,每个元素占用最少的存储空间
- 缺点:只能使用相邻的一块存储单元,可能会产生较多的外部碎片
链式存储结构
链式存储结构在于解决我们经常插入,删除时,处于经常变化的数据结构。
将数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。
- 优点:不会出现碎片现象,能充分利用所有存储单元
- 缺点:每个元素因为存储指针而占用额外的存储空间,且只能实现顺序存储。
抽象数据类型
数据类型
一组性质相同的值的集合及定义在此集合上的一些操作的总称。
抽象数据类型(Abstract Data Type)
对已有的数据类型进行抽象,就有了抽象数据类型。
一个数学模型及定义在该模型上的一组操作。
参考书籍:《大话数据结构》