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

数据结构概念

一、逻辑结构(Logical Structure)


定义:
数据元素之间抽象的逻辑关系,与计算机存储无关,只关注 “元素之间是什么关系”。
作用:
描述数据 “怎么组织”,是算法设计的基础。
四大基本逻辑结构:
1.集合结构
元素同属一个集合,无其他关系。
2.线性结构
元素之间一对一关系,如线性表、栈、队列、串。
3.树形结构
元素之间一对多关系,如二叉树、B 树。
4.图状结构(网状结构)
元素之间多对多关系,如图、网。

线性表、栈、队列、串、数组 → 线性结构
二叉树、森林 → 树形结构
图 → 图状结构

二、存储结构(Storage Structure)


定义:
逻辑结构在计算机存储器中的具体实现形式,也叫物理结构。
作用:
决定数据如何存放、如何访问、效率如何。
四大基本存储结构:
1.顺序存储结构
用一段连续的存储单元存放数据。
例:数组。
2.链式存储结构
用任意存储单元,通过指针链接。
例:单链表、双向链表。
3.索引存储结构
建立附加索引表,通过索引查找。
例:数据库索引。
4.散列存储结构(哈希存储)
根据关键字直接计算存储地址。
例:哈希表。

顺序表、数组 → 顺序存储
单链表、双向链表 → 链式存储
数据库索引 → 索引存储
哈希表 → 散列存储

三、两者关系(必背)


1.逻辑结构是数据的 “抽象模型”
2.存储结构是逻辑结构的 “物理实现”
3.一种逻辑结构可以用多种存储结构实现
例:线性表 → 顺序表(顺序存储)、链表(链式存储)
4.存储结构直接影响算法的时间与空间效率

四、不同逻辑结构的使用场景总结


1. 线性结构(一对一关系
核心特征:数据元素之间存在严格的先后顺序,每个元素最多只有一个前驱和一个后继。
典型代表:线性表、栈、队列、串、数组
适用场景:
线性表:需要频繁随机访问、顺序遍历的场景,如学生成绩列表、商品清单。
栈(先进后出):函数调用栈、表达式求值、括号匹配、浏览器前进 / 后退功能。
队列(先进先出):消息队列、任务调度、打印队列、缓冲区管理。
:文本编辑、字符串匹配、编译器词法分析。
2. 树形结构(一对多关系)
核心特征:数据元素之间存在层次关系,一个父节点可以对应多个子节点。
典型代表:二叉树、二叉搜索树、平衡树(AVL / 红黑树)、B 树、字典树
适用场景:
层次化组织:文件系统目录、公司组织架构、家谱、分类目录。
高效查找与排序:二叉搜索树、平衡树用于数据库索引、有序数据的快速增删查。
路由与前缀匹配:字典树(Trie)用于自动补全、IP 路由查找、字符串前缀匹配。
决策与遍历:决策树、表达式树用于 AI 决策、数学表达式解析。
3. 图状结构(多对多关系)
核心特征:数据元素之间可以存在任意关联,每个元素可以有多个前驱和多个后继。
典型代表:有向图、无向图、带权图
适用场景:
网络建模:社交网络(用户关系)、交通网络(路线规划)、通信网络(路由算法)。
路径规划:最短路径算法(Dijkstra/Floyd)用于地图导航、物流配送。
依赖分析:任务依赖调度、课程先修关系、编译依赖管理。
连通性问题:社交圈子发现、电路连通性检测、最小生成树(Kruskal/Prim)。
4. 集合结构(无明确关系)
核心特征:数据元素同属一个集合,元素之间无固定逻辑关系,仅强调 “属于 / 不属于”。
典型代表:哈希集合、有序集合
适用场景:
去重与存在性判断:统计唯一访客、过滤重复数据、快速判断元素是否存在。
交集 / 并集 / 差集运算:好友推荐(共同好友)、数据筛选、集合类数学运算。
一句话速记
一对一 → 线性结构:适合顺序、排队、后进先出等线性场景
一对多 → 树形结构:适合层次化、分类、层级管理场景
多对多 → 图状结构:适合网络、路径、复杂关联场景
无固定关系 → 集合结构:适合去重、存在性判断、集合运算场景

http://www.jsqmd.com/news/561060/

相关文章:

  • AI模型量化部署:AI应用架构师的进阶之路
  • 华为eNSP实战:VRRP双机热备与负载均衡配置详解
  • 小型企业做SEO网站优化推广多少钱
  • SDMatte模型版本管理与回滚策略:保障线上服务无缝升级
  • 从Flannel迁移到Calico:在Ubuntu 24.04上为K8s v1.28更换网络插件的完整避坑指南
  • GPS定位背后的数学:卫星位置解算中的10个关键公式与迭代算法详解
  • 微信读书助手wereader:打造你的专属数字阅读管理系统
  • 手把手教你用AT命令搞定MQTT连接与发布(附阿里云物联网平台日志排查法)
  • Unity基础:GameObject游戏对象的创建与管理
  • 实战:LLM的网页工具箱:Fetch与GeneralSearch的协同作战
  • 手把手教你用Python模拟实现信号量、管程和互斥锁(附完整代码)
  • 开源工具yfinance数据获取技术指南:从行业痛点到实战解决方案
  • 3分钟搞定AI大模型下载:text-generation-webui智能下载系统全解析
  • LabelImg图像处理优化:从视觉增强到高效标注的全流程解决方案
  • 10G以太网Subsystem避坑指南:复位敏感性与时钟配置的实战经验
  • EcomGPT-7B电商大模型Python爬虫实战:竞品数据智能采集与分析
  • 基于SolidWorks宏的草图点坐标批量提取与自动化处理
  • 3分钟掌握Charticulator:免费开源的可视化图表构建终极指南
  • 企业办公环境下的麒麟系统安全加固:基于Kylin V10 SP1的账户、外设与联网管控实战
  • 别再手动敲命令了!宝塔面板Docker管理器一键部署网心云全记录
  • 从原理到代码:一文搞懂Cholesky分解在MATLAB中的高效实现
  • SadTalker实战指南:从环境搭建到性能优化的全方位解决方案
  • 别只盯着电路!电刺激器电源设计的核心:如何根据人体阻抗精准计算电压电流需求
  • 别再只改版本号了!深入CreepJS源码,看它如何识破伪造的Chromium 106
  • 东莞seo引擎优化和网站推广有什么区别
  • 正点原子lwIP实战指南——从FreeRTOS移植到网络应用开发
  • 如何快速解除Cursor限制:免费工具一键重置设备标识
  • 揭秘量化因子评估:从理论到实践的投资策略优化指南
  • RV1106 LVGL9.2.3 Ffmpeg组件视频播放实战:从编译到UI集成的完整指南
  • 从Vim模式切换,到国产化论述:一份给非CS专业同学的Linux应试“生存指南”