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

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

一、数据结构的基本概念

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.pswp.cn/web/89481.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣每日一题--2025.7.15

📚 力扣每日一题–2025.7.15 3135. 有效单词 (简单) 大家好!今天我们要来聊聊一道有趣的编程题——有效单词 📝 题目描述 题目分析 📚 题目要求我们判断一个字符串是否为有效单词。有效单词需要满足以下…

Mysql数据库——增删改查CRUD

文章目录一、数据库的基础命令二、创建表三、增(create)四、查询(retrieve)五、条件查询(where)六、修改(update)七、删除(delete)一、数据库的基础命令 1.使用客户端连接服务器 mysql -u root…

关于pytorch虚拟环境及具体bug问题修改

本篇博客包含对于虚拟环境概念的讲解和代码实现过程中相关bug的解决关于虚拟环境我的pytorch虚拟环境在D盘,相应python解释器也在D盘(一起),但是我的pycharm中的项目在C盘,使用的是pytorch的虚拟环境,这是为…

U盘量产工具与性能优化完全指南

本文还有配套的精品资源,点击获取 简介:U盘量产工具是IT行业中的专业软件,用于批量生产或修复U盘。安国和银灿是两个提供U盘量产工具的主控芯片制造商,提供初始化、格式化、分区管理、性能优化、故障修复、个性化定制、固件升级…

Golang http开发实战:构建RESTful API保姆级教程

目录 章节1:RESTful API的精髓与Go的Web开发哲学 RESTful API的设计原则 Go的http包核心组件 实战:第一个RESTful API端点 章节2:设计优雅的RESTful路由 路由设计的注意事项 使用Gorilla Mux实现动态路由 章节3:请求与响应的艺术:解析与格式化 解析请求数据 统一…

UGUI 性能优化系列:第一篇——基础优化与资源管理

UGUI 性能优化系列:第一篇——基础优化与资源管理 UGUI 性能优化系列:第二篇——Canvas 与 UI 元素管理 在 Unity 游戏中,用户界面(UI)是玩家与游戏交互的核心。然而,不当的 UGUI 使用常常成为游戏性能的…

多端协同的招聘系统源码开发指南:小程序+APP一体化设计

当下,很多企业选择搭建属于自己的多端协同招聘平台,尤其是中大型人力资源公司、连锁品牌企业,以及同城服务平台,更是将“小程序APP”一体化招聘系统视为提升效率、降低用工成本的利器。 今天,笔者将从源码开发的角度&a…

Maven 配置文件核心配置:本地仓库、镜像与 JDK 版本

Maven 配置文件核心配置:本地仓库、镜像与 JDK 版本 在 Maven 项目开发中,合理配置 settings.xml 文件能显著提升依赖管理效率。本文将聚焦本地仓库、镜像加速和 JDK 版本这三个核心配置,结合 IDEA 环境详细讲解配置方法与作用。 一、Maven 配…

【时时三省】(C语言基础)通过指针引用字符串

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省如在printf函数中输出一个字符串。这些字符串都是以直接形式(字面形式)给出的,在一对双撇号中包含若干个合法的字符。使用字符串的更加灵活方便的方法——通…

【Linux驱动-快速回顾】一文快速理解GIC内部寄存器对中断的控制

第一部分:GIC的功能和组成 1. GIC要解决的根本问题 在一个复杂的片上系统(SoC)中,有非常多的硬件模块(如定时器、串口、按键、DMA等),它们都需要在完成任务或遇到特定事件时通知CPU。同时&#…

【IoTDB 线上小课 17】开源 ≠ 免费,3 分钟总结开源商用指南

【IoTDB 视频小课】第十七期,解答你最关心的开源商业使用问题!关于 IoTDB,关于物联网,关于时序数据库,关于开源...一个问题重点,3-5 分钟,我们讲给你听:原来开源商业化有这么多规则开…

VUE项目学习笔记 v-for绑定数据,该数据异步获取,同时需要对v-for的DOM节点进行js操作

问题描述:项目里有一个轮播图,轮播图的图片数据从服务器获取,用v-for生成DOM在页面中显示,轮播图插件会通过new Swiper给DOM添加CSS、事件等,实现轮播效果。在这里存在操作顺序问题:当服务器返回图片数据后…

Science | 如何利用“T细胞+组蛋白乙酰化”两大国自然热点?T细胞耗竭机制与代谢-表观遗传调控的新范式

CD8⁺T细胞耗竭(T cell exhaustion)是肿瘤免疫治疗的核心瓶颈,其表观遗传重塑机制(如组蛋白修饰)是当前国自然重点资助的前沿方向。耗竭T细胞(TEX)是指在慢性感染(如持续性病毒感染&…

Logback 配置的利器:深入理解<property>与<variable>

在构建现代 Java 应用程序时,日志是不可或缺的一部分。一个健壮的日志系统不仅能帮助我们监控应用程序的运行状态,还能在问题发生时提供关键的诊断信息。Logback 作为 SLF4J 的一个流行实现,以其高性能和灵活的配置而广受开发者喜爱。 然而&a…

Java中excel字典转换

✅ 背景说明EasyExcel 原生的 ExcelProperty 注解不支持 dictType(不像那样有 Excel(dictType"xxx")),所以如果你想实现字典翻译功能,就需要自己实现 Converter 接口,比如 DictConvert。✅ 什么是 DictConve…

数据结构-3(双向链表、循环链表、栈、队列)

一、思维导图二、双向循环链表的判空、尾插、遍历(反向)、尾删class Node:def __init__(self, data):self.data dataself.next Noneself.prior Noneclass circularDoublyLinkedList():def __init__(self):self.head Noneself.tail Noneself.size 0def isEmpty(self):retu…

IDEA运行Tomcat一直提示端口被占用(也查不到该端口)

首先查看是否是因为Java程序异常终止,进程没有完全释放导致。打开资源管理器,找到所有的java.exe,强制结束任务。如果仍然不行,那就极可能还是开启了hyper-V虚拟化,查看排除的tcp端口范围端口号没被占用却提示占用&…

AWS Lambda 最佳实践:构建高效无服务器应用的完整指南

引言 AWS Lambda 作为无服务器计算的核心服务,让开发者能够专注于业务逻辑而无需管理服务器。本文将通过实际案例和代码示例,分享 Lambda 开发中的关键最佳实践。 1. 函数设计原则 单一职责原则 每个 Lambda 函数应该只做一件事,这样更容易测试、维护和扩展。 # ❌ 不推…

29、鸿蒙Harmony Next开发:深浅色适配和应用主题换肤

目录 应用深浅色适配 应用跟随系统的深浅色模式 应用主动设置深浅色模式 系统默认判断规则 使用建议与限制 设置应用内主题换肤 概述 自定义主题色 设置应用内组件自定义主题色 设置应用局部页面自定义主题风格 设置应用页面局部深浅色 系统缺省token色值 应用深浅…

源鉴SCA4.9︱多模态SCA引擎重磅升级,开源风险深度治理能力再次进阶

SCA技术已成为数字供应链开源治理的关键入口。源鉴SCA深度融合悬镜原创专利级AI智能代码疫苗技术,是国内首款集源码组件成分分析、代码成分溯源分析、制品成分二进制分析、容器镜像成分扫描、运行时成分动态追踪及开源供应链安全情报预警分析等六大核心引擎为一体的…