数据结构基础

数据结构基础

什么是数据结构
数据结构

数据结构(data structure)是指相互间存在一种或多种特定关系的数据元素的集合。是组织并存储数据以便能够有效使用的一种专门格式,它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。 而这些,在计算机中又被划分成两部分:
一种是数据结构的逻辑层面,即数据的逻辑结构
一种是存在于计算机世界的物理层面,即数据的存储结构
由此,数据结构可以理解成:
数据结构 = 逻辑结构 + 存储结构 +(在存储结构上的)运算/操作

数据逻辑结构

数据逻辑结构可分为三种:线性结构,树状结构,网状结构。

线性结构:
线性结构的特点是有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前驱和一个直接后继,前一个节点只和前一个节点和后一个节点相连,即一对一。大家可以把它想象成工厂的流水线,从一个口进,另一个口出,没有其他流水线相连。

树状结构:
树状结构的特点是除了一个数据元素(root)以外每个数据元素有且仅有一个直接前驱元素,但是可以有多个直接后续元素,即一对多。 这个可以想象成一颗树,根(root)只有一个,然后分出多个树枝,每个树枝又分出多个枝叶。

网状结构:
网状结构的特点是每个数据元素可以有多个直接前驱元素,也可以有多个直接后续元素,即多对多。它可以看成地铁线路图,错综复杂,互相之间都有联系。

数据存储结构

数据存储结构可分为顺序存储结构,链式存储结构,索引存储结构,散列存储结构。其中最常用的是顺序和链式,索引和散列用于特殊场合,解决特定的问题,同时存在几个存储结构合在一起构成的复杂结构。

顺序存储结构:
把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。
优点:减小节点空间,只储存数据;按照索引查找数据,效率高。
缺点:增删麻烦,需要移动大量数据;需要提前指定空间大小,占据内存空间,不够需要扩增。
在这里插入图片描述

链式存储结构:
数据元素的存储对应的是不连续的存储空间,每个存储节点对应一个需要存储的数据元素。每个结点是由数据域和指针域组成。元素之间的逻辑关系通过存储节点之间的链接关系反映。逻辑上相邻节点物理上不必相邻。一般会在头尾各创建一个不含数据节点,只包含地址指针。称为头指针和尾指针。
优点:增删数据效率高;不浪费内存空间,增加一个节点开辟一个空间。
缺点:查找效率低下;增大节点空间,用于储存内存地址和数据。
在这里插入图片描述

索引存储结构:
除建立存储结点信息外,还增加附加的索引表来标识结点的地址。索引是数据库中的一钟对象,目的只有一个提高查询速度。索引本身也要占用空间,但是占据空间有限,查询效率提升很高。比如字典在目录后就附加索引。

散列存储结构:
根据结点的关键字直接计算出该结点的存储地址,比如Java中的HashSet、HashMap底层就是散列存储结构。散列存储的查询不是基于比较,换思路,而是基于计算。根据关键字可以计算出其存储位置。查询效率极快

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值