Go版数据结构 -【1.1 数据结构的分类与基本概念】

news/2024/9/28 21:01:06/

1.1 数据结构的分类与基本概念

本节我们将对数据结构的基本概念以及分类进行讲解,数据结构有很多种,但是主要也就是集中于几种类型,本节我们将进行逐一讲解。

什么是数据结构

按照标准说法,数据结构指的是在计算机中存储和组织数据的一种方式,以便能够有效地访问和修改数据。

我们举例来说明一下,我们现在有一万本书需要放入图书馆,那么为了后续方便管理,我们一般会这样做:将这些书籍分类,之后放入不同的书架

这个分类的放入书架的方法,就叫做数据结构,我们的结构是:书架的每一层放不同分类的书籍。

同样的,我们在编程时也会遇到类似这样的情况,需要采用一种特定的结构方式来管理数据,比如说使用数组结构存储数据,这就是数据结构


数据结构的重要性

从上面的例子我们可以看出,数据结构所解决的就是我们的效率问题,一方面是数据的存放效率,一方面是数据的查询效率。

比如在图书分类的需求中,我们使用了书籍分类、书架分层的方式。这样我们在处理一万本书的时候,按照我们的结构方法去操作就可以。

首先在存放的时候,我们按照分类去放置,那么我们的存放工作就不会那么乱,哪怕是几个人同时操作也没什么问题。在查找书籍的时候,根据分类去找到书架层级,再通过索引就可以快速找到对应的书籍。


数据结构的分类

数据结构按照数据之间的关系可以分为线性数据结构与非线性数据结构;按照存储方式可以分为顺序存储结构与链式存储结构

线性数据结构 数据以线性的方式排列,每个元素前后分别只有一个元素。例如:数组、链表、栈、队列。

非线性数据结构 元素之间的关系比较复杂,不是单纯线性排列的。例如:树、图。

顺序存储结构: 元素按顺序存储在连续的内存空间中。例如:数组就是典型的顺序存储结构,支持高效的随机访问。

链式存储结构: 数据元素通过指针连接存储,元素可以分布在不同的内存位置。例如:链表是一种常见的链式存储结构,适合频繁插入和删除操作的场景。


我的GitHub:https://github.com/swxctx

书籍地址:https://gs.golang.website/

书籍代码:https://github.com/YouCanGolang/GoStructedCode


http://www.ppmy.cn/news/1531618.html

相关文章

4 html5 web components原生组件详细教程

web components 前面我们已经介绍过,这一期我们就来讲一讲具体用法和这其中的关键只是点: 1 基本使用 如果我们想实现一个封装的原生组件,那就离不开使用js去封装,这里主要就是基于HTMLElement这个类,去创建创建一个子类,然后使用customElements.define去页面中注册这个…

xlsx库插件读取excel文件

input读取xlsx文件内容 效果代码 前端用input读取 .xlsx文件的内容 xlsx库参考连接 项目中我用的ant-design-vue&#xff0c;不过用input一样的大同小异 注意区分xlsx库和node-xlsx库的使用环境 效果 代码 <!--* Descripttion: * Author: 苍狼一啸八荒惊* Date: 2024-08-…

网页爬虫法律与道德:探索法律边界与道德规范

目录 引言 一、网络爬虫技术概述 1.1 定义与功能 1.2 技术原理 1.3 案例分析 二、网络爬虫的法律边界 2.1 合法性要求 2.2 刑事风险 2.3 案例分析 三、网络爬虫的道德规范 3.1 尊重版权和隐私 3.2 合理使用爬虫技术 3.3 透明度和社会责任 四、技术挑战与应对策略…

netty之Future和Promise

结构 #mermaid-svg-CVCnLB2sqPPK8Gn2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-CVCnLB2sqPPK8Gn2 .error-icon{fill:#552222;}#mermaid-svg-CVCnLB2sqPPK8Gn2 .error-text{fill:#552222;stroke:#552222;}#merm…

Karmada新版本发布,支持联邦应用跨集群滚动升级

摘要&#xff1a;本次升级支持联邦应用跨集群滚动升级&#xff0c;使用户版本发布流程更加灵活可控&#xff1b;透明同事karmadactl 新增了多项运维能力&#xff0c;提供独特的多集群运维体验。 本文分享自华为云社区 《Karmada v1.11 版本发布&#xff01;新增应用跨集群滚动升…

初始MYSQL数据库(6)—— 事务

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; MYSQL 目录 事务的概念 事务的ACID特性 使用事务 查看支持事务的存储引擎 事务的语法 保存点 自动/手动提交事务 事务的隔离性和…

uni-app 封装websocket 心跳检测,开箱即用

class websocketUtils {constructor(url, needbeat, options {}) {this.needbeat needbeat;this.url url;this.options options;this.ws null;this.heartbeatInterval options.heartbeatInterval || 10000; // 心跳间隔&#xff0c;默认为10秒 this.reconnectInterval …

SPI驱动学习七(SPI_Slave_Mode驱动程序框架)

目录 一、SPI_Slave_Mode驱动程序框架1. Master和Slave模式差别1.1 主设备 (Master)1.2 从设备 (Slave)1.3 示例 2. SPI传输概述2.1 数据组织方式2.2 SPI控制器数据结构 3. SPI Slave Mode数据传输过程4. 如何编写程序4.1 设备树4.2 内核相关4.3 简单的示例代码4.3.1 master和s…