数据结构泛谈

数据结构是计算机科学中用于组织、管理和存储数据的一种方式;

它决定了数据的存储布局以及如何有效地操作这些数据;

是算法设计和性能优化的基础,选择合适的数据结构可以显著提升程序的运行效率。

数据结构我们可以这么拆解:数据 + 结构

为什么?下面我要说骚话了

数据------对应的是储存特性,我们要使用合适的数据结构高效的存储数据,这个我们可以认作是数据结构中的一个方面,体现在物理存储上面,计算机实际是如何进行数据存储的:

存储结构

存储结构是逻辑结构在计算机中的实现方式,分为以下两种(其实考虑到计算机的存储结构设计以及局部性原理,所有的存储都是一个内存块,讨论逻辑地址,那么一个连续的数据需要存储,只存在两种存储形式,连续的内存块和不连续的,而不连续的内存块以什么形式联系在一起就可以分为 更多的逻辑结构):

  • 顺序存储: 数据存储在连续的内存单元中。
    • 优点:存取速度快。
    • 缺点:插入和删除效率低。
  • 链式存储: 数据存储在非连续的内存单元中,通过指针连接。
    • 优点:插入和删除效率高。
    • 缺点:访问速度较慢。

结构------词重点就是结构,对应的是逻辑特性,就和抽象的联系起来,讨论的就是逻辑性的关系:

逻辑结构

逻辑结构指数据之间的逻辑关系,主要分为以下四种:

  • 集合结构: 数据元素之间仅有"属于同一个集合"的关系。
    • 例如:集合 {A, B, C}。
  • 线性结构: 数据元素之间是一对一的关系。
    • 例如:数组、链表。
  • 树形结构: 数据元素之间是一对多的关系。
    • 例如:二叉树、B 树。
  • 图结构: 数据元素之间是多对多的关系。
    • 例如:邻接矩阵、邻接表。

常见数据结构简介

数据结构 特点 优点 缺点 应用场景
数组 顺序存储,支持随机访问 访问效率高(O(1)) 插入和删除效率低(O(n)) 频繁访问元素,数据大小固定
链表 链式存储,每个节点包含数据和指针 插入和删除效率高(O(1)) 访问效率低(O(n)) 动态数据存储,数据大小变化频繁
栈 先进后出(LIFO)的线性结构 简单易用,支持递归调用 不适合需要随机访问的场景 递归调用、括号匹配、表达式求值
队列 先进先出(FIFO)的线性结构 顺序处理操作方便 不支持随机访问 任务调度、消息队列
哈希表 基于键值对存储,通过哈希函数快速定位元素 查找、插入和删除效率高(平均 O(1)) 需要处理哈希冲突,空间利用率低 数据快速查找,频繁增删操作
树 分层结构,节点之间是一对多的关系 快速查找,层级关系清晰 平衡维护成本高(如平衡二叉树) 层级关系表示、快速查找
图 顶点和边组成的结构,用于表示复杂关系 表示多对多关系灵活 复杂度高,存储和操作消耗较大 网络连接、路径规划、社交网络分析

数据结构选择参考

因素 描述
操作类型 数据是否需要频繁插入、删除、修改或查询?
数据大小 数据量较大时,空间复杂度可能成为关键问题。
数据关系 数据之间是否存在特定的逻辑关系(如层级、顺序或网状)?
访问模式 是否需要随机访问或按顺序访问?

数据结构学习建议(都是鬼话,谁能背下来,反正我不能......)

  1. 掌握基础结构: 熟悉数组、链表、栈和队列的实现和应用。
  2. 理解复杂结构: 深入学习树和图的各种类型和操作。
  3. 分析复杂度: 学会评估时间复杂度和空间复杂度。
  4. 动手实践: 多用代码实现和优化常见数据结构。
  5. 结合实际: 根据具体问题选择合适的数据结构解决。

数据结构和算法:

纯纯的相互纠缠不清,你中有我、我中有你,上面说了我们背不下来,我们还是记常用算法吧,常用stl你啥都能了解了,记不住的时候知道有哪些相关的数据结构就行了。算法啥的我们也是这样的,学了记不住没关系,大家都是代码"文抄公"谁也别笑谁,知道有哪些对付哪种问题,你再上网查吧,别对自己那么狠(当然有狠人,我给跪下,emmmm)

(下面是废话)

  • 数据结构 是算法的载体,不同的数据结构为算法的实现提供不同的支持。
    • 例如:堆排序依赖于堆数据结构,深度优先搜索(DFS)依赖于栈。
  • 算法 是对数据结构的操作和优化。
    • 例如:二分查找基于有序数组,Dijkstra 算法基于图。

我在这个系列中会逐步解析基本的数据结构......再见

相关推荐
code斗5 小时前
Java数据结构:堆详解
java·开发语言·数据结构
Elaine3367 小时前
数据结构与算法-程序
数据结构·python·算法·计算机基础·编程基础
Logic1018 小时前
C语言/数据结构位运算题解:异或XOR找出游戏速通中的“独特初始能量值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Bruce_Liuxiaowei10 小时前
Python 字典默认值完全指南:从 KeyError 到 defaultdict
开发语言·数据结构·python·字典
All for pursuit.14 小时前
【二叉树-10】114.二叉树展开为链表
数据结构·c++·算法·leetcode·链表
心中有你021416 小时前
C语言埃氏筛法(素数筛选)
c语言·数据结构·算法
释厄62319 小时前
多黑洞具现论·物理/生物/金融三域显化·虚拟宇宙黑洞·奇点=0 圆圈
开发语言·数据结构·人工智能·程序人生·安全威胁分析
库玛西1 天前
攻克 408 数据结构:图论基石深度拆解(数学极值推演 + 存储内存剖析 + BFS/DFS 双核模板)
数据结构·算法·深度优先·广度优先·图搜索算法
m0_547486667 天前
《数据结构教程》全套 PPT课件2026
数据结构
tryxr7 天前
矩阵的几种基础变换
java·数据结构·算法·矩阵