数据结构与数据类型区别

 

 

 

数据结构

什么是结构

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

什么是数据结构

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

逻辑结构

逻辑结构是指数据元素之间的逻辑关系,它独立于数据在计算机的存储方式,可以看作是从具体问题抽象出来的数学模型。
在这里插入图片描述
逻辑结构又分为:线性结构(有且只有一个开始结点和终端结点;所有结点最多只有一个直接前驱和一个直接后继),非线性结构(对应于线性结构,非线性结构每个结点可以有不止一个直接前驱和直接后继)

线性结构:数组、链表、栈、队列 …
非线性结构:集合、树、图…
在这里插入图片描述
在这里插入图片描述
(集合结构中的数据元素之间只有“同属于一个集合”的关系,没有其他结构关系)

物理结构

物理结构也称存储结构,是逻辑结构用计算机语言的实现,它依赖于计算机语言。
数据的存储结构主要有:顺序存储、链式存储、索引存储、散列存储。
在具体实现存储时,可以选择在内存里开辟连续内存空间或不连续的内存空间,也可以混搭成更复杂的存储方式。
在这里插入图片描述
顺序存储:存储的物理位置通常情况是连续分布的
链接存储:存储的物理位置未必连续,看实现方式,通过记录相邻元素的物理位置来找到相邻元素
索引存储:类似于树状目录,存储形式看实现方式
散列存储:通过关键字直接计算出元素的物理地址。存储形式看实现方式

数据类型

严蔚敏《数据结构》

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

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

数据类型有两种,是按照定义中“值的集合”来区分的。一、“值的集合”是数据结构,“数据结构”的集合和在该集合上的一组操作叫做结构类型。二、“值的集合”是基本的原子类型(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数据则不含有这些表示关系的部分。【引自 知乎】

参考

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

 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值