文章目录

  • 数据结构
    • 什么是结构
    • 什么是数据结构
      • 逻辑结构
      • 物理结构
  • 数据类型
  • 参考

数据结构

什么是结构

结构是指在一个系统或者材料之中,互相关联的元素的排列、组织。结构按类别可分为等级结构
(有层次的一对多)、网格结构(多对多)、晶格结构(临近的个体互相连接)等。

什么是数据结构

相互之间存在一种或多种特定关系数据元素的集合,包括逻辑结构和物理结构。定义了计算机存储、组织数据的方式。

逻辑结构

逻辑结构是指数据元素之间的逻辑关系,它独立于数据在计算机的存储方式,可以看作是从具体问题抽象出来的数学模型。

逻辑结构又分为:线性结构(有且只有一个开始结点和终端结点;所有结点最多只有一个直接前驱和一个直接后继),非线性结构(对应于线性结构,非线性结构每个结点可以有不止一个直接前驱和直接后继)

线性结构:数组、链表、栈、队列 …
非线性结构:集合、树、图…


(集合结构中的数据元素之间只有“同属于一个集合”的关系,没有其他结构关系)

物理结构

物理结构也称存储结构,是逻辑结构用计算机语言的实现,它依赖于计算机语言。
数据的存储结构主要有:顺序存储、链式存储、索引存储、散列存储。
在具体实现存储时,可以选择在内存里开辟连续内存空间或不连续的内存空间,也可以混搭成更复杂的存储方式。

顺序存储:存储的物理位置通常情况是连续分布的
链接存储:存储的物理位置未必连续,看实现方式,通过记录相邻元素的物理位置来找到相邻元素
索引存储:类似于树状目录,存储形式看实现方式
散列存储:通过关键字直接计算出元素的物理地址。存储形式看实现方式

数据类型

严蔚敏《数据结构》

数据结构:相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构
数据类型:一个值的集合以及定义在这个值集合上的一组操作(增删改查读写…)的总称

数据类型和数据结构其实是所属关系。

数据类型有两种,是按照定义中“值的集合”来区分的。一、“值的集合”是数据结构,“数据结构”的集合和在该集合上的一组操作叫做结构类型。二、“值的集合”是基本的原子类型(int、double、char、byte、boolean、指针类型、空类型 …)再加上在该值集合上的操作就是原子类型。

总之,数据结构是一种“值的集合”,这种值的集合+值集合上的操作 = 结构类型,而结构类型是数据类型中的一种。

Python内置数据类型:
数字类型:int、float、complex、boolean
序列类型:文本序列类型字符串 str、序列类型列表 list 、元组tuple、range、二进制序列类型bytes、bytearray、memoryview
集合类型set
映射类型:字典dict
其他内置类型:类、实例、模块、空

对比:
数据类型定义了数据在计算机存储的大小及数据的操作。比如int类型的数据,在计算机存储是两个字节的长度。
数据结构定义了计算机存储、组织数据的方式。往往同高效的检索算法和索引技术有关。比如mysql数据库索引,使用的是B+树结构,提高了数据的检索效率,减少了io的操作。

形象的说法
可把数据类型比作原子,他们之间的不同就是元素种类的不同,只涉及元素自身的特性(比如两种原子内部的质子数中子数不同),是一种内在属性。而数据结构可比作分子,他们强调的是数据之间的关系。举例来讲,链表这种数据结构,无论含有多少数据甚至不含数据,它也会有指针域和表头,这些部分就表现了“关系”。数组作为“线性表”,是0个或多个元素在空间中紧密排列的一种关系结构。而单个int/char/float/double数据则不含有这些表示关系的部分。【引自 知乎】

参考

我是攻城师 ---- 数据结构与数据类型的区别,联系,本质?
知乎 ----「数据结构」和「数据类型」两个概念的本质是什么,区别与联系是什么?

数据结构与数据类型区别相关推荐

  1. 数据结构、数据类型、抽象数据类型之间的区别

    三者的定义(蓝字可忽略): 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构.(数据元素是最基本的数据单位,最基本的数据元素是一个二进制位.) 逻辑结构指反映数据元素 ...

  2. 数据结构 线性 非线性_线性和非线性数据结构之间的区别

    数据结构 线性 非线性 Here you will learn about difference between linear and non linear data structure. 在这里,您 ...

  3. numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)

    numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray) 原创  2017年02月18日 10:35:43

  4. 浅谈数据结构和数据类型

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012540337/article/details/80499226 最近总是被这两个概念混淆,抽出 ...

  5. SQL Server中Text和varchar(max)数据类型区别

    SQL Server中Text和varchar(max)数据类型区别 以前只知道text和image是可能被SQL Server淘汰的数据类型,但具体原因不太清楚,今天读书的时候发现了text与var ...

  6. 数据结构和数据类型之间的关系

    数据结构 = 数据元素 + 数据关系: 数据类型 = 数据结构 + 数据操作: 所以数据类型的范畴是大于数据结构的. 数据类型的范畴和类有点相似.其实类也是一种数据类型. int,char基本类型 同 ...

  7. 非基元类型数据结构_Java数据类型–基元和二进制文字

    非基元类型数据结构 Java is a strongly typed language, that means all the variables must first be declared bef ...

  8. 9种数据类型,数据类型区别及判断数据类型方法

    基本数据类型: String,Number,null,undefined,Boolean  (通常所说的五种原始数据类型),Symbol,BigInt (ES6新增) 引用类型: object  [基 ...

  9. mysql数据类型 区别_MySQL分钟数据类型的区别

    char.varchar.text.ntext. bigint.int.smallint.tinyint和bit的区别及数据库的数据类型 Varchar 对每个英文(ASCII)字符都占用2个字节,对 ...

最新文章

  1. 暑假N天乐【比赛篇】 —— 2019杭电暑期多校训练营(第五场)
  2. Docker 实战教程之从入门到提高 (五)
  3. Parallels Desktop虚拟机无法关机提示“虚拟机处理器已被操作系统重置”
  4. leetcode - 413. 等差数列划分
  5. Go实现Raft第一篇:介绍
  6. 94女,大厂程序员,收入50w+
  7. jQuery新的事件绑定机制on()
  8. 打乱魔方软件_一种智能魔方打乱装置的制作方法
  9. 在微信中分享页面之调用微信sdk接口
  10. android listview 缓存,探究Android ListView 的缓存机制
  11. ppt复现CVPR顶会流程图
  12. 网络通信之传输层协议
  13. Scrapy十秒钟爬取贝壳二手房3000条房源信息
  14. 新Android病毒出现 自动下载且无法卸载
  15. C#微信登录-手机网站APP应用
  16. linux下ganglia监控系统搭建,linux下ganglia监控系统搭建
  17. Why? When? How?--我和香烟的故事
  18. 【前端】JavaScript(一)
  19. 2019软件测试培训费用多少?
  20. C++实现cat021(0.26版)报文解析

热门文章

  1. 使用DW创建html并保存
  2. 图像缩放算法及速度优化
  3. 2022年度强化学习领域19个重要进展汇总
  4. 一份标准的软件测试计划包含哪些要素?
  5. DJI 无人机 Onboard SDK ROS 功能包demo运行
  6. 计算机房颁奖词,期末考试表彰颁奖词.doc
  7. python之父是哪国_Python之父:Python概览
  8. Android开发两年,跳槽面试小公司面试官说我可以试试大厂
  9. html分割线自动适应,CSS实现自适应分隔线的N种方法
  10. DoDataExchange(CDataExchange *pDX) 详解