当前位置: 首页 > news >正文

数据结构之----逻辑结构、物理结构

数据结构之----逻辑结构、物理结构

目前我们常见的数据结构分别有:
数组、链表、栈、队列、哈希表、树、堆、图
而它们可以从 逻辑结构和物理结构两个维度进行分类。

什么是逻辑结构?

逻辑结构是指数据元素之间的逻辑关系,而逻辑结构又分为线性结构和非线性结构两大类。

什么是线性结构?

线性结构比较直观,指数据在逻辑关系上呈线性排列
如:
在数组和链表中,数据按照顺序依次排列,体现了数据之间的线性关系。

什么是非线性结构?

非线性结构则与线性结构相反,指数据在逻辑关系上呈非线性排列
如:
在图中,数据由节点和边构成,反映了复杂的网络关系。
而在树中,数据从顶部向下按层次排列,表现出祖先与后代之间的派生关系。

在这里插入图片描述

而非线性数据结构又可以进一步被划分为树形结构和网状结构。

  • 线性结构:数组、链表、队列、栈、哈希表。元素之间是一对一的顺序关系。
  • 树形结构:树、堆、哈希表。元素之间是一对多的关系。
  • 网状结构:图。元素之间是多对多的关系。

什么是物理结构?

物理结构指的是数据在计算机内存中的存储方式,可分为连续空间存储(数组)和分散空间存储(链表)。
它从底层决定了数据的访问、更新、增删等操作方法,同时在时间效率和空间效率方面呈现出互补的特点。
在这里插入图片描述

我们都知道所有数据结构都是基于数组、链表或二者的组合实现的
如:
栈和队列既可以使用数组实现,也可以使用链表实现。
而哈希表的实现可能同时包含数组和链表。

  • 基于数组可实现:栈、队列、哈希表、树、堆、图、矩阵、张量(维度 ≥ 3 的数组)等。
  • 基于链表可实现:栈、队列、哈希表、树、堆、图等。

基于数组实现的数据结构也被称为静态数据结构,这意味着此类数据结构在初始化后长度不可变
相对应地,基于链表实现的数据结构被称为动态数据结构,这类数据结构在初始化后,仍可以在程序运行过程中对其长度进行调整

Q&A

为什么哈希表同时包含线性数据结构和非线性数据结构?

哈希表底层是数组,而为了解决哈希冲突,我们会使用链式地址:数组中每个桶指向一个链表,当链表长度超过一定阈值时,又可能被转化为树(通常为红黑树)。
从存储的角度来看,哈希表的底层是数组,其中每一个桶槽位可能包含一个值,也可能包含一个链表或树。因此,哈希表可能同时包含线性(数组、链表)和非线性(树)数据结构。

基于数组实现的数据结构也被称为“静态数据结构”是否有歧义?因为栈也可以进行出栈和入栈等操作,这些操作都是“动态”的。

栈确实可以实现动态的数据操作,但数据结构仍然是“静态”(长度不可变)的。尽管基于数组的数据结构可以动态地添加或删除元素,但它们的容量是固定的。如果数据量超出了预分配的大小,就需要创建一个新的更大的数组,并将老数组的内容复制到新数组中

在构建栈(队列)的时候,未指定它的大小,为什么它们是“静态数据结构”呢?

在高级编程语言中,我们无须人工指定栈(队列)的初始容量,这个工作是由类内部自动完成的。例如,Java 的 ArrayList 的初始容量通常为 10 。另外,扩容操作也是自动实现的

http://www.lryc.cn/news/257988.html

相关文章:

  • pip 通过git安装库
  • C语言——从终端输入 3 个数 a、b、c,按从大到小的顺序输出。
  • 【JVM从入门到实战】(二)字节码文件的组成
  • OPC UA常见故障信息代码
  • 第20关 快速掌握K8S下的有状态服务StatefulSet
  • ​如何使用https://www.krea.ai/来实现文生图,图生图,
  • 点滴生活记录2
  • 【带头学C++】----- 九、类和对象 ---- 9.12 C++之友元函数(9.12.1---12.4)
  • 设计模式的定义
  • 【Kubernetes】存储类StorageClass
  • 【LLM】大模型之RLHF和替代方法(DPO、RAILF、ReST等)
  • Spring Boot监听redis过期的key
  • day01、什么是数据库系统?
  • 2023年医疗器械行业分析(京东医疗器械运营数据分析):10月销额增长53%
  • MISRA C++ 2008 标准解析
  • Linux16 ftp文件服务区、vsftpd文件系统服务安装、lftp客户端安装、NFS远程共享存储
  • [排序篇] 冒泡排序
  • CGAL的四面体网格重构
  • 排序-选择排序与堆排序
  • d2l绘图不显示的问题
  • 智能优化算法应用:基于人工蜂群算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 云原生的 CI/CD 框架tekton - Trigger(二)
  • maven环境搭建
  • 利用Rclone将阿里云对象存储迁移至雨云对象存储的教程,对象存储数据迁移教程
  • 二叉树的前序遍历
  • final的安全发布
  • 3易懂AI深度学习算法:长短期记忆网络(Long Short-Term Memory, LSTM)生成对抗网络 优化算法进化算法
  • 云计算 云原生
  • 深拷贝、浅拷贝 react的“不可变值”
  • 赛宁网安多领域亮相第三届网络空间内生安全发展大会