首页 > 其他分享 >几种基本数据结构

几种基本数据结构

时间:2024-07-20 18:29:06浏览次数:20  
标签:基本 存储 单链 几种 链式 数据结构 数据 节点

目录

前言

线性结构

链式结构

单链表

双链表​编辑

树形结构


前言

在我们编写程序时,经常会出现需要存储数据的情况,而数据的存储是有讲究的,数据不是在我们的内存中胡乱存储,为了保证数据在进行修改和查找时更加方便,我们就要学习数据结构(也就是数据的存储结构)

线性结构

线性结构顾名思义就是将数据像线一样连在一起,数据是连在一起的一个数据的后面挨着另一个数据[图片]

我们之前学习的数组就属于这种数据结构

好处:这种数据结构的好处就是查找速度快,每个数据都有自己的索引,我们可以按照索引快速查找数据

缺点:这种数据结构的缺点就是如果我想插入一个数据或者修改一个数据时会非常麻烦,因为每个数据都是挨着的,如果我修改中间的一个数据,这个被修改的数据后面所有的数据都要向前移动

链式结构

链式结构在物理上是不挨着的,但在逻辑上是挨揍的什么意思呢?

物理上也就是在内存中,链式结构的数据其实是完全不挨着的一个在东一个在西,但是我们在使用时他打印出来的数据又是有序的,所有逻辑上感觉数据是挨着的

链式结构分为单链表和双链表

单链表

在单链表中每一个节点被分成了两半,一部分保存我们要存储的数据,另一部分保存他下一个节点的地址值,只要每一个节点都保存下一个节点的地址,他们不管在内存中存储的有多么分散都能通过地址找到下一个节点

双链表

双链表的逻辑和单链表的是一样的,只是在单链表的基础上节点里又多个一个空间,这个空间用来记录当前节点前一个节点的地址值,这种链表我们可以从前往后遍历,也可以从后往前遍历

好处:链表的插入和删除就比线性结构快多了,当我们需要插入和删除时只需要改变节点中保存的地址然后删除想删除的节点就可以了

缺点:但是链表想要查找又很慢了,因为我不知道每个节点的地址,知道这些节点地址的只有他上一个节点,这就导致每次遍历都要从头找

树形结构

高级的链式结构,每一个节点会链两个数据,数据会按照一定的规律存储

第一次存储的数据被当成父节点在最上面,之后每次存放的数据都会和第一个节点比较,小就准备放左边,大就准备放右边,然后继续跟左边或右边的节点比较。 直到找到一个为没有节点的位置,进行存储数据

这种数据结构最终存储的数据是有序的

标签:基本,存储,单链,几种,链式,数据结构,数据,节点
From: https://blog.csdn.net/weixin_65346668/article/details/140574956

相关文章

  • 数据结构(二叉树-1)
    文章目录一、树1.1树的概念与结构1.2树的相关术语1.3树的表示二、二叉树2.1二叉树的概念与结构2.2特殊的二叉树满二叉树完全二叉树2.3二叉树的存储结构三、实现顺序结构二叉树3.1堆的概念与结构3.2堆......
  • 数据结构 - HashSet
    概述java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出......
  • 关于My SQL 数据库的基本操作
     基本概念1.SQL(StructuredQueryLanguage)**:SQL是用于管理关系数据库的标准语言,包括数据查询、插入、更新和删除操作。2.数据库:存储数据的集合,可以包含多个表。3.表:数据库中的基本存储单元,由行和列组成,每一行代表一条记录,每一列代表一个字段。4.字段/列:表......
  • JAVA 数据结构 - 数组
    一、固定数组Arrays数组用来存储固定大小的同类型的元素;1、声明,初始化,访问int[]myIntArray;double[]myDoubleArr;String[]myStrArr;intsize=10;double[]myDoubleArr=newdouble[size];double[]myList={1.9,1.4,2.3,9.8};for(inti=0;i<myList.le......
  • JavaScript 基本语法
    JavaScript基本语法1、简介1.1、概念1.2、JavaScript的组成部分1.3、前端三大件2、编写及运行3、关键字(具有特殊作用的字)4、变量4.1、声明变量的关键字:var4.2、命名规范4.3、经典的变量命名法5、运算符5.1、赋值运算符5.2、加性运算符5.3、乘性运算5.4、一元运算符5.5......
  • G2O(2) 基本例子 3D-3D位姿求解 -( 一元点多边 3D点对位姿求解)求解3D点1到3D点2的变换
     残差1通常2D像素对3D点位姿和点    2但是这个里面没有2D像素,是单纯的3D点对3D点位姿求解   CMakeLists.txtcmake_minimum_required(VERSION2.8)project(vo1)set(CMAKE_BUILD_TYPE"Release")add_definitions("-DENABLE_SSE")set(CMAKE_CXX_FLAGS......
  • 【数据结构初阶】顺序表三道经典算法题(详解+图例)
    Hello!很高兴又见到你了~~~看看今天要学点什么来充实大脑吧——目录1、移除元素【思路+图解】 【总结】2、删除有序数组中的重复项【思路+图解】【总结】3、合并两个有序数组【思路+图解】【总结】 至此结束,ShowTime!1、移除元素【思路+图解】 ......
  • 数据结构-双链表
    一.概念与结构链表的结构丰富多样,基本分为以下的八种(2×2×2)1.1单项或双向双向链表区别于单向链表的是,其多了一个指针区域,指向其前一个结点,这样就可以通过任意一个结点进行前后遍历.1.2带头或不带头带不带头指的是其有无头结点,即下图的head结点,这个结点是一个......
  • 【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计
    初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油!时间与空间复杂度的深度剖析深入解析顺序表:探索底层逻辑深入解析单链表:探索底层逻辑深入解析带头双向循环链表:探索底层逻辑深入解析栈:探索底层逻辑深入解析队列:探索底层逻辑深入解析循环队列:探索底层逻辑......
  • 【数据结构】详解堆
    一、堆的概念堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。堆是非线性数据结构,相当于一维数组,有两个直接后继。如果有一个关键码的集合K={k₀,k₁,k₂,k₃,…,kₙ₋₁ },把它的所有元素按完全二叉树的顺序存储方......