数据结构的基本概念
作者:互联网
明确基本的概念
数据:是信息的载体。不需深挖,就是平常说的数据。
数据元素:用例子理解:学生记录就是一个数据元素,由学号、姓名、性别等数据项组成。
数据对象:一个相同性质的数据集合,如整型数据对象。
数据类型:数据的各种分类方法,就是你想的“类型”。
有几个常见的类型,了解一下,知道意思就行:
1. 原子类型:不能再分了的数据。
2. 结构类型:还可以再分的数据。
3. 抽象数据类型:抽象的 由数据构成的 组织结构和其操作。
数据结构:通俗地理解成排列或其他等结构。
数据结构三要素
逻辑结构
各数据间的逻辑关系,分为线性结构和非线性结构。
线性结构:可理解为一个接着一个的结构。(注意:“接着”不代表挨在一起,可以相隔万里,只是逻辑上的)
非线性结构:不是线性结构的结构。(集合也是一种非线性结构)
逻辑结构只是脑子里想的结构,把它付诸于实践,在硬盘上实现,存数据,就要考虑存储结构。
存储结构
也称 物理结构 。它依赖计算机去实现。
典型的四种存储结构如下:
1. 顺序存储:一个接着一个,并且挨在一起存。
优点:①随机存取。②存储每个元素要的空间最少。
缺点:只能用一整块空间,会有碎片剩余。
2. 链式存储:一个接着一个,但是不挨着存。
优点:没有碎片。
缺点:每个元素要用到指针,额外占用空间。
3. 索引存储:建立索引表,表中每一项叫索引项。(关键字,地址)
优点:查很快。
缺点:①表占空间。②增删要改表,也得花较多时间。
4. 散列存储:又叫哈希(Hash)存储。利用设计的函数,根据元素的关键字计算出它要存储的地址。
优点:增删查都快。
缺点:散列函数不好选,若是函数不好,会出现计算出的地址冲突的情况,解决这个冲突又得花时间。如函数是 对10取余 ,则 3%10为3 ,13%10也为3。
数据的运算
并非 1+1=2 的数学运算,而是指数据结构的变化。
功能是改变逻辑结构。
具体步骤是在存储结构上操作的。
值得注意的点
随机存储。
随机存取是顺序存储中一个很重要的优势。
它是指知道数据排在第几个后能够迅速找到其存储的地址,原因是元素一个挨着一个存。链式存储则不行,因为每个元素地址存在上一个元素的指针中,需要一个一个往后找,才能找到需要的元素值。
可以用抽象数据类型去定义一个完整的数据结构,而数据的元素、对象、关系都不可以。
定义一个完整的数据结构需要具备逻辑结构、存储结构和数据运算三要素。
可用例子理解:数组。
有一个接着一个的逻辑和存储结构,并且有自己的运算规则。(增删改数据要按照数组元素的计算方法)
有序表属于逻辑结构,而顺序表、哈希表和单链表都不属于。
“有序表”只告诉了你数据是有序的,此有序为逻辑上的。
顺序表和单链表本就是在存储结构中介绍的,而哈希表是通过运算找到存储地址,是为存储服务的,在逻辑可表达为函数。
循环队列和栈 与数据的存储结构有关吗?
循环队列是一个类似于排队的机制,先进先出,并且头和尾相连接,构成循环。它其实是和存储结构有关的,因为需要一整片连续的空间来存储,也就是用顺序表去存储。
栈和队列是经常拿来作比较的两个概念。栈就是一个没有盖子的细长水杯,存数据就是往里放球,先进后出。栈可以顺序存储,也可以链式存储,所以与存储结构无关。
思考:是逻辑结构独立于存储结构,还是存储结构独立于逻辑结构呢?
逻辑结构独立于存储结构。
存储结构是根据逻辑结构去定的,而逻辑结构是面向需求先定的,独立于其他。
思考:对于两种数据结构,它们的逻辑结构或存储结构一定不同吗?
有可能其中一个相同,甚至逻辑结构和存储结构都一样都有可能。
如二叉树和二叉排序树。逻辑结构和存储结构都是相同的,但是其数据运算不相同。二叉排序树需要找其值在排序中的位置再插入。
相同的逻辑结构,相同的运算,在不同的存储方式下实现,则运算效率不同。
如线性表,逻辑结构和运算都相同,但分别用顺序表和用链表存储时,执行操作所需的时间不同。
标签:存储,元素,逻辑,数据结构,数据,基本概念,结构 来源: https://www.cnblogs.com/DS-Leo/p/16661104.html