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

数据结构入门:像整理收纳一样简单!

在我们生活中,经常会面对这样的问题:
“我要怎么整理我的衣柜?”
“电脑里照片太多了,怎么归类才方便查找?”
其实,程序员也有类似的烦恼。他们不整理衣柜,而是“整理数据”。而这门关于如何“收纳”和“使用”数据的学问,就叫做数据结构

一、数据结构的基本概念

1、数据

数据是信息的载体,是数字、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

2、数据元素

数据元素是数据的基本单位。

一个数据元素有若干个数据项组成(数据项是构成数据元素的最小单位)。

如下表所示,学生记录就是一个数据元素,姓名、生日、年龄均为数据项,构成了一条学生记录。

数据元素
学生记录一个人另一个人
数据项姓名
数据项生日数据项组合项
数据项
数据项
数据项年龄

3、数据对象与数据结构

数据对象——具有相同性质的数据元素的集合

例如:全国所有门店的排队顾客信息

数据结构——一种或多种特定关系的数据源的集合

例如:某个特定门店的排队顾客信息和他们之间的联系

4号、5号、6号都是A门店排队顾客,4号在5号之前,5号在6号之前,他们具有特定关系,组成一个数据结构
5号、2号他们之间具有相同性质,同一个数据对象里的元素————
4号——>|5号|——>6号  A门店排队顾客信息|   ||   | 
1号——>|2号|——>3号  B门店排队顾客信息————

4、数据类型

原子类型(int、bool等)

结构类型(其值可以分解成若干成分)

Struct Customer{int num;int people;...
};

抽象数据类型(用数学化的语言定义数据的逻辑结构、定义运算。只有当要用计算机去是实现这种结构的时候才考虑哪种存储结构。

二、数据结构三要素

数据的逻辑结构独立于存储结构,数据的存储结构依赖于逻辑结构。

例如,有序表—>顺序表/链表

1. 数据的逻辑结构

这指的是数据之间的关系

常见的逻辑结构有:

  • 集合:结构中的元素同2属于一个集合外,别无其它关系,例如:{1,7,9}。
  • 线性结构:像排队买奶茶,前后有顺序。例如:数组、链表。
  • 树形结构:像家谱,有祖先和后代。例如:二叉树、家族树。
  • 图形结构:像城市地铁图,站点之间可以相互连接。例如:社交网络图。

2. 数据的存储结构

在存储数据时,通常不仅要存储各数据元素的值,而且要存储数据之间的关系。

这个讲的是数据如何放进计算机的内存里,关系到程序运行的效率。

常见的存储方式有:

  • 顺序存储(像数组)
    就像地铁列车车厢,每节车厢相连,不好插队。

  • 链式存储(像链表)
    像一串钥匙环,你可以随意添加或拆掉中间的钥匙。

  • 索引存储

  • 散列存储

3. 数据的运算

施加在数据上的运算包括运算的定义和实现。

运算的定义是针对逻辑结构的,运算的实现是针对存储结构的。

运算的实现,这是说我们能对这种结构的数据做哪些事,比如:

  • 插入(加一个新的数据)

  • 删除(拿掉某个数据)

  • 查找(找到你要的那条信息)

  • 排序(按大小、字母、时间排序)

http://www.dtcms.com/a/285376.html

相关文章:

  • 【git仓库搭建笔记】
  • 二、Dify 版本升级教程(LInux-openeuler)
  • react/vue vite ts项目中,自动引入路由文件、 import.meta.glob动态引入路由 无需手动引入
  • cartorgapher的编译与运行
  • 需要保存至服务器的:常见编辑、发布文章页面基础技巧
  • Machine Learning HW2 report:语音辨识(Hongyi Lee)
  • 如何防止GitHub上的敏感信息被泄漏?
  • Jenkins+Docker+Git实现自动化CI/CD
  • 大带宽服务器都有哪些应用场景?
  • 群晖中相册管理 immich大模型的使用
  • Honeywell霍尼韦尔DV-10 变速器放大器 输入 15-28 VDC,输出 +/- 10VDC 060-6881-02
  • 【HCI log】Google Pixel 手机抓取hci log
  • HTTP 性能优化:五条建议
  • 构建智能客服Agent:从需求分析到生产部署
  • UGUI 性能优化系列:第二篇——Canvas 与 UI 元素管理
  • 如何选择旅游科技行业云ERP?Oracle NetSuite助力汇智国际数智化升级
  • Oracle 19C 后台主要进程的功能解析
  • (LeetCode 面试经典 150 题 ) 242. 有效的字母异位词 (哈希表)
  • nginx-http反向代理与负载均衡
  • 大规模图计算引擎的分区与通信优化:负载均衡与网络延迟的解决方案
  • Nginx配置Spring Boot集群:负载均衡+静态资源分离实战
  • 百度权重提升技巧分析:从底层逻辑到实战策略
  • x86上编译jetson nano的docker
  • 【Docker】在Linux环境下使用Dockerfile打包镜像(图文示例)
  • Spring中的设计模式
  • 因果图方法设计测试用例的价值与使用范围
  • untiy之导入插件(文件方式,适用于git克隆失败)
  • TCP通讯开发注意事项及常见问题解析
  • MTSC2025参会感悟:手工测试用例的智能化生成
  • Typecho+阿里云CDN完整配置:防止DDoS攻击与IP暴露