ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数据结构的基本概念

2022-09-09 16:30:55  阅读:222  来源: 互联网

标签:存储 元素 逻辑 数据结构 数据 基本概念 结构


明确基本的概念

数据:是信息的载体。不需深挖,就是平常说的数据。

数据元素:用例子理解:学生记录就是一个数据元素,由学号、姓名、性别等数据项组成。

数据对象:一个相同性质的数据集合,如整型数据对象。

数据类型:数据的各种分类方法,就是你想的“类型”。
 有几个常见的类型,了解一下,知道意思就行:
  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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有