简单说几个常见的数据结构

  • 什么是数据结构
    数据结构是以一种特定的布局方式存储数据的容器,布局方式决定了数据结构对于某些操作是否是高效的,
    如:ArrayList 查询效率高 增删效率低 因为底层是数组结构,有索引,查询比较方便,但是增删的话需要重新排序就是移动索引
    LinkedList 是查询效率低,增删效率高 ,底层是linked双向链表,查询时只能从头到尾来查询,但是删除的话比较没有约束,随便删除,

  • 数据结构分类
    数据结构可以分成逻辑结构和物理结构,

  • 逻辑结构
    逻辑结构就是按照对象中的元素之间的相互关系分类,
    1 集合关系:集合结构中数据元素除了属于同一个集合外,没有其他关系,
    在这里插入图片描述
    2 线性结构:元素之间是挨着的,一个接着一个,向一根线一样,常见的线性结构表 有栈,队列 ,串(一维数组),
    在这里插入图片描述
    3 树形结构:一对多的相互关系,不是一个挨着一个了,而是一个对应多个,如果有两个元素对应一个元素,那就是二叉树,树形结构表有二叉树,红黑树,b树,
    在这里插入图片描述
    4 图形结构:元素之间存在多对多的关系,比如像是网状型,
    在这里插入图片描述

  • 物理结构
    物理结构是逻辑结构在计算机中真正的表达方式,也叫存储结构,

  • 顺序结构:
    把数据元素放到地址连续的存储单元里面,常见的数组就是顺序结构,
    在这里插入图片描述
    顺序结构存在一定的弊端,在生活中一个排队中有人会插队,有人会突然离开,这个时候整个结构都会发送变化,

  • 链式存储结构
    把数据元素存放到任意的存储单元里面,可以是连续或是不连续,每个单元中会存放一个指针指向数据元素的地址,这样通过指针来找到相关的数据元素位置,
    在这里插入图片描述

在这里插入图片描述

  • 线性结构
    栈:是一种只能从一端存取数据,且数据遵循先进后出,后进先出的原则线性存储结构,
    在这里插入图片描述
    链表:是线性结构,有多个节点构成,是相互链接的线性顺序项目序列组成, 每个节点有两部分
    数据部分:保存该节点的实际数据
    地址部分:保存上一个或是下一个节点的地址
    链表的种类 单向链表(正向遍历),双向链表 (可以前进和后退),双向循坏链表(头连接尾)。
    特点有:节点在存储器上的位置是任意的,访问时只能通过头或是尾进入链表,并通过节点的指针向前或是向后查询,
    优缺点:数据元素个数可以自由扩充,添加,删除等操作不必移动数据,只需要修改指针,修改效率高,因为是线性结构 在访问时按照顺序来访问,访问效率低,

     参考一下 双向链表定义 自行脑补单向链表和循坏链表,
     单向链表:方向单一,访问要从头开始读取,添加随意位置,
     双向链表:节点有两个指针,方向可正可反,
    

在这里插入图片描述

  • 数组
    是固定大小的结构,可以存储相同数据类型,数组中有索引,可以进行随机访问 查询效率高,但是增删需要先进行索引重新排序,比较费时,
    在这里插入图片描述

  • 队列
    是一种特殊的线性表,特殊之处就是只允许在表的前端进行进行删除操作。在表的后端进行添加操作,就是对头就行删除,对尾进行添加,
    操作就是 进队:将元素插入队列的末尾,出队 从头开始删除
    在这里插入图片描述
    一般用于管理多线程,用于排队系统,

  • 树形结构
    存储具有一对多关系的数据元素的集合,
    节点:存储数据元素的地方 节点的度:节点所拥有子节点的个数,深度:层次次数
    二叉树:每个节点最多有两个子树,有左右之分,左小右大;

  • 哈希表 (散列表)
    用于存储键和值的数据结构,将一个key键和一个数据元素存储位置建立对应关系,因此在查询时需要一个键来查询到数据元素,这样对应关系称为是散列函数 h(key)
    特点就是查询快,
    在这里插入图片描述
    每个键对应哈希函数生成的值,找到索引下的值,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值