8种数据结构

server/2024/12/22 13:12:55/

目录

前言 

什么是数据结构

常见的数据结构

1、数组

2、栈

3、队列

4、链表

5、树

6、散列表

7、堆

8、图


 

前言 

美国心理学家曾提出过一个六度分离理论。它指的是“你和任何一个陌生人之间所间隔的人不会超过五个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”根据这个理论,你和世界上的任何一个人之间只隔着五个人,不管对方在哪个国家,属哪类人种,是哪种肤色。

可以看出,我们生活在一个复杂的像蜘蛛网一样的世界,我们每个人并不是单独的个体,而是和其他人有联系的。在当今这个大数据时代,数据即财富。所以我们需要用计算机存储、分析大量的数据,提取出对我们来说有价值的数据。

我们每个人每天都在产生数据,例如我们在APP里聊天、在网络商城购物都会产生大量的数据。正如人和人之间有很多联系一样,数据和数据之间也会有许多联系,没有哪个数据是单独存在的,即使有,这种数据也没有利用价值,我们没有必要去分析,研究它。

数据结构恰恰就是用来囊括数据以及数据与之间关系的一种集合。数据结构的起源是研究如何将相关联的数据存储到计算机中,并为后续分析提供有效的数据源。好的数据结构,能让我们做起事来事半功倍。精心选择的数据结构可以带来更高的计算速度和存储效率。

什么是数据结构

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。”

程序=数据结构+算法,数据结构属于静态的部分,算法的调用为动态部分

为什么要学习数据结构

数据结构是所有计算机专业的同学必学的一门课程。

数据结构研究的是数据如何再计算机中进行组织和存储,使得我们可以高效的获取数据或者修改数据。

计算机专业的学生都开设过数据结构课程,它是计算机学科知识结构的核心和技术体系的基石。数据结构作为计算机专业的专业基础课程,是计算机考研的必考科目之一,如果有打算报考计算机专业的研究生,这门数据结构你是必须要学好它的,同时,工作以后的同学,会有想去报考计算机 软考 、计算机 等级考试的,数据结构也是必考的内容之一,科学技术在飞速发展,但是作为基石的科学技术没有动摇,由于近年来算法工程师的高薪火爆,使得数据结构的重视程序空前高涨,总而言之,既然我们已经与计算机接轨就必须掌握好它。

常见的数据结构

1.数组

2.栈

3.队列

4.链表

5.树

6.散列表

7.堆

8.图

1、数组

数组是可以在内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。

2、栈

栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。栈的结构就像一个集装箱,越先放进去的东西越晚才能拿出来,所以,栈常应用于实现递归功能方面的场景,例如斐波那契数列。

3、队列

队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队。

4、链表

链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。

5、树

树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做 “树” 是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:

每个节点有零个或多个子节点;

没有父节点的节点称为根节点;

每一个非根节点有且只有一个父节点;

除了根节点外,每个子节点可以分为多个不相交的子树。

6、散列表

散列表,也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。

7、堆

堆是一种比较特殊的数据结构,可以被看做一棵树的数组对象,具有以下的性质:

堆中某个节点的值总是不大于或不小于其父节点的值;

堆总是一棵完全二叉树。

8、图

图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。


http://www.ppmy.cn/server/109574.html

相关文章

Mac M1 Max配置torch-geometric等深度学习库

前提:此电脑中已经安装好了Anaconda环境 (一)查看创建的虚拟环境中torch的版本 import torch torch.__version__(二)针对安装的 torch 版本,去官网下载torch-geometric 依赖的对应版本 torch-sparse、tor…

使用sass的混合插入模式进行@media响应式媒体查询做自适应开发

使用sass的混合插入模式进行media响应式媒体查询做自适应开发 // 定义混合指令并传参数 mixin respond($breakname) {//控制指令if $breakname phone {//手机端 <480media (max-width: 480px) {//向混合样式中导入内容content;}} else if $breakname ipad {//ipad端 481&a…

NoSql数据库 Redis集群详解

目录 一、NoSql数据库简介 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 1.2 为什么还要用 NoSQL 数据库呢&#xff1f; 1.3 RDBMS和NOSQL的特点及优缺点&#xff1a; 二 Remote Dictionary Server 简介&#xff08;redis&#xff09; 2.1 什么是redis …

【C++标准模版库】模拟实现容器适配器:stack、queue、priority_queue(优先级队列)

stack和queue 一.容器适配器1.什么是适配器 二.模拟实现stack和queue三.STL标准库中stack和queue的底层结构四.deque&#xff08;双端队列&#xff09;的简单介绍五.deque作为stack和queue的默认容器的原因六.priority_queue&#xff08;优先级队列&#xff09;的介绍和使用七.…

创建型设计模式-构建器(builder)模式-python实现

设计模式汇总&#xff1a;查看 通俗示例 想象一下&#xff0c;你正在一家餐厅点餐。你告诉服务员你想要一个汉堡&#xff0c;但是汉堡有很多种配置&#xff1a;面包种类、肉类、蔬菜、酱料等。服务员会根据你的要求&#xff0c;一步一步构建出你想要的汉堡。在这里&#xff0c…

【面试经验】三天速通字节DevInfra三面

字节效率是真的高&#xff0c;前两面都是面完10分钟直接约下一面&#xff0c;三面面完没消息了&#xff0c;不知道是不是寄了&#xff0c;原本感觉和面试官聊的还挺好的来着 面经&#xff0c;只挑了有印象的。 一面 45min 聊实习项目。面试官要求详细讲了系统架构。postgres…

OCCT-计算二维图形的中轴线

方案一&#xff1a;三角剖分、重心的连接 // 获取TopoDS_Shape中所有三角形的重心并连接成中轴线 TopoDS_Shape GetTriangleCentroids(const TopoDS_Shape& shape) {std::vector<gp_Pnt> points;TopExp_Explorer explorer(shape, TopAbs_FACE);while (explorer.More…

AI学习记录 - 线性代数(3Blue1Brown)

一天更新一点点&#xff0c;只更新重点内容&#xff0c;一句话定义&#xff0c;简单的定义&#xff0c;避免脑子及记太多 向量的加法就是一种趋势运动 向量的延长缩短&#xff0c;就是分量的延长缩短 基向量就是在平面或者任意维度空间随便定义的一个向量 多个基向量的组合可…