数据结构与数据类型区别
文章目录
- 数据结构
- 什么是结构
- 什么是数据结构
- 逻辑结构
- 物理结构
- 数据类型
- 参考
数据结构
什么是结构
结构是指在一个系统或者材料之中,互相关联的元素的排列、组织。结构按类别可分为等级结构
(有层次的一对多)、网格结构(多对多)、晶格结构(临近的个体互相连接)等。
什么是数据结构
相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构。定义了计算机存储、组织数据的方式。
逻辑结构
逻辑结构是指数据元素之间的逻辑关系,它独立于数据在计算机的存储方式,可以看作是从具体问题抽象出来的数学模型。
逻辑结构又分为:线性结构(有且只有一个开始结点和终端结点;所有结点最多只有一个直接前驱和一个直接后继),非线性结构(对应于线性结构,非线性结构每个结点可以有不止一个直接前驱和直接后继)
线性结构:数组、链表、栈、队列 …
非线性结构:集合、树、图…
(集合结构中的数据元素之间只有“同属于一个集合”的关系,没有其他结构关系)
物理结构
物理结构也称存储结构,是逻辑结构用计算机语言的实现,它依赖于计算机语言。
数据的存储结构主要有:顺序存储、链式存储、索引存储、散列存储。
在具体实现存储时,可以选择在内存里开辟连续内存空间或不连续的内存空间,也可以混搭成更复杂的存储方式。
顺序存储:存储的物理位置通常情况是连续分布的
链接存储:存储的物理位置未必连续,看实现方式,通过记录相邻元素的物理位置来找到相邻元素
索引存储:类似于树状目录,存储形式看实现方式
散列存储:通过关键字直接计算出元素的物理地址。存储形式看实现方式
数据类型
严蔚敏《数据结构》
数据结构:相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构
数据类型:一个值的集合以及定义在这个值集合上的一组操作(增删改查读写…)的总称
数据类型和数据结构其实是所属关系。
数据类型有两种,是按照定义中“值的集合”来区分的。一、“值的集合”是数据结构,“数据结构”的集合和在该集合上的一组操作叫做结构类型。二、“值的集合”是基本的原子类型(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数据则不含有这些表示关系的部分。【引自 知乎】
参考
我是攻城师 ---- 数据结构与数据类型的区别,联系,本质?
知乎 ----「数据结构」和「数据类型」两个概念的本质是什么,区别与联系是什么?
数据结构与数据类型区别相关推荐
- 数据结构、数据类型、抽象数据类型之间的区别
三者的定义(蓝字可忽略): 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构.(数据元素是最基本的数据单位,最基本的数据元素是一个二进制位.) 逻辑结构指反映数据元素 ...
- 数据结构 线性 非线性_线性和非线性数据结构之间的区别
数据结构 线性 非线性 Here you will learn about difference between linear and non linear data structure. 在这里,您 ...
- numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)
numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray) 原创 2017年02月18日 10:35:43
- 浅谈数据结构和数据类型
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012540337/article/details/80499226 最近总是被这两个概念混淆,抽出 ...
- SQL Server中Text和varchar(max)数据类型区别
SQL Server中Text和varchar(max)数据类型区别 以前只知道text和image是可能被SQL Server淘汰的数据类型,但具体原因不太清楚,今天读书的时候发现了text与var ...
- 数据结构和数据类型之间的关系
数据结构 = 数据元素 + 数据关系: 数据类型 = 数据结构 + 数据操作: 所以数据类型的范畴是大于数据结构的. 数据类型的范畴和类有点相似.其实类也是一种数据类型. int,char基本类型 同 ...
- 非基元类型数据结构_Java数据类型–基元和二进制文字
非基元类型数据结构 Java is a strongly typed language, that means all the variables must first be declared bef ...
- 9种数据类型,数据类型区别及判断数据类型方法
基本数据类型: String,Number,null,undefined,Boolean (通常所说的五种原始数据类型),Symbol,BigInt (ES6新增) 引用类型: object [基 ...
- mysql数据类型 区别_MySQL分钟数据类型的区别
char.varchar.text.ntext. bigint.int.smallint.tinyint和bit的区别及数据库的数据类型 Varchar 对每个英文(ASCII)字符都占用2个字节,对 ...
最新文章
- 暑假N天乐【比赛篇】 —— 2019杭电暑期多校训练营(第五场)
- Docker 实战教程之从入门到提高 (五)
- Parallels Desktop虚拟机无法关机提示“虚拟机处理器已被操作系统重置”
- leetcode - 413. 等差数列划分
- Go实现Raft第一篇:介绍
- 94女,大厂程序员,收入50w+
- jQuery新的事件绑定机制on()
- 打乱魔方软件_一种智能魔方打乱装置的制作方法
- 在微信中分享页面之调用微信sdk接口
- android listview 缓存,探究Android ListView 的缓存机制
- ppt复现CVPR顶会流程图
- 网络通信之传输层协议
- Scrapy十秒钟爬取贝壳二手房3000条房源信息
- 新Android病毒出现 自动下载且无法卸载
- C#微信登录-手机网站APP应用
- linux下ganglia监控系统搭建,linux下ganglia监控系统搭建
- Why? When? How?--我和香烟的故事
- 【前端】JavaScript(一)
- 2019软件测试培训费用多少?
- C++实现cat021(0.26版)报文解析